Winapi 动态卸载Dll 我已经尽力将注入的Dll从C++转换为D,并到达了我想要动态卸载DLL的时候,F7被按下。 在C++中,使用“代码> FRIELBARARYANDUITIONTHORY < /COD>很简单,让DLL卸载自己,但是在DDL中使用时,方法似乎不起作用。 在这里你可以看到工作C++代码: // Module.cpp void Module::QuitThread() { while (true) { // KeyPress if ((GetAsyncKeyState(VK_F7) & 0x8000) != 0) { break; } Sleep(1); } FreeLibraryAndExitThread(Module::_hDllModule, 0); }
我知道这是一种快速而肮脏的方式,但现在已经足够了。以下是D等价物:Winapi 动态卸载Dll 我已经尽力将注入的Dll从C++转换为D,并到达了我想要动态卸载DLL的时候,F7被按下。 在C++中,使用“代码> FRIELBARARYANDUITIONTHORY < /COD>很简单,让DLL卸载自己,但是在DDL中使用时,方法似乎不起作用。 在这里你可以看到工作C++代码: // Module.cpp void Module::QuitThread() { while (true) { // KeyPress if ((GetAsyncKeyState(VK_F7) & 0x8000) != 0) { break; } Sleep(1); } FreeLibraryAndExitThread(Module::_hDllModule, 0); },winapi,dll,d,Winapi,Dll,D,我知道这是一种快速而肮脏的方式,但现在已经足够了。以下是D等价物: // module.d private void quitThread() { while (true) { // KeyPress if (GetAsyncKeyState(VK_F7) & 0x8000) { break; } Sleep(1); } FreeLibraryAndExitThread(_
// module.d
private void quitThread()
{
while (true) {
// KeyPress
if (GetAsyncKeyState(VK_F7) & 0x8000) {
break;
}
Sleep(1);
}
FreeLibraryAndExitThread(_hModule, 0);
}
这是预期的行为吗?如何卸载D Dll?此代码中没有特定于D的内容。您可以在调用FreeLibrary之前尝试终止运行时。(
core.runtime.runtime.terminate();
)。调用core.runtime.runtime.terminate()
在FreeLibraryAndExitThread
导致主机进程崩溃之前。在D中编程的是主机还是dll?在DYou中编程的dll混淆了WinAPI和D。如果您有Win32 DLL句柄,则无论发生什么情况,都可以随时使用Win32 API卸载它。阅读D手册。