Как построить DLL во время выполнения?

описание проблемы

У меня есть приложение, которое загружает DLL во время выполнения. Я хочу, чтобы пользователь мог изменить код в этой DLL во время работы приложения. Когда пользователь нажимает кнопку «Компиляция» в приложении, он освобождает все данные из DLL. После освобождения dll приложение затем перестроит dll. По сути, действуя как
Время выполнения скомпилированной программы.

Идеальная реализация

void ReCompile()
{
//hDLL contains dll that was already loaded.
FreeLibrary(hDLL);

//code to rebuild MyDll.DLL would go here.

LPCWSTR dll = L"MyDll.dll";
hDLL = LoadLibrary(dll);
}

В настоящее время это работает, мне просто нужно знать, как перестроить dll с помощью кода, чтобы он выглядел гораздо более плавным и интуитивно понятным.

Текущая реализация

void Free()
{
FreeLibrary(hDLL);
}

//I go into my other visual studio that's running and press the build button myself.

void ReloadDll()
{
LPCWSTR dll = L"MyDll.dll";
hDLL = LoadLibrary(dll);
}

0

Решение

Кредит переходит к TheUndeadFish.

void ReCompile()
{
//hDLL contains dll that was already loaded.
FreeLibrary(hDLL);

//my solution
system("msbuild \"D:\\Neumont\\Imagine\\RenderEngine\\Imagine.sln\" /property:Configuration=Debug /property:platform=Win32 ");
//general purpose
system("msbuild <path to your sln> /property:Configuration=build /property:platform=YourPlatform");LPCWSTR dll = L"MyDll.dll";
hDLL = LoadLibrary(dll);
}

Вам нужно добавить путь msbuild к переменным окружения. Моя была расположена в C: \ Program Files (x86) \ MSBuild \ 14.0 \ Bin. вам, возможно, придется запустить vcvars32.bat

видео сборки DLL во время выполнения в действии https://youtu.be/mFSv0tf6Vwc

0

Другие решения

Других решений пока нет …