【发布时间】:2017-03-11 01:22:59
【问题描述】:
问题描述
我有一个在运行时加载 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);
}
【问题讨论】:
-
在您的应用程序中包含编译器、链接器和构建工具。哦,还有一个编辑器,可能还有 IDE。
-
@RichardCritten 只需要将 C++ 项目构建成 dll。
-
好吧,你可以直接调用 Visual Studio 的命令行来调用构建。
-
@TheUndeadFish 目前处于这一点,类似于“cl.exe /LD MyDll.cpp”。不过,我遇到了一个错误。我不确定如何告诉 cmd 提示符在哪里查找 dll 需要的文件。
-
与其在 cl.exe 级别下工作,不如考虑研究如何调用一次构建整个项目。我相信这将是通过 devenv.exe(也可能是其他方式)。
标签: c++ dll build runtime compiled