我已经尽力将注入的Dll从C ++转换为D,并且当我按下F7时,我想要动态卸载Dll。
在C ++中,使用FreeLibraryAndExitThread
让Dll自行卸载很简单,但是当在D Dll中使用时,该方法似乎不起作用。
在这里,您可以看到正在运行的C ++代码:
// Module.cpp
void Module::QuitThread()
{
while (true) {
// KeyPress
if ((GetAsyncKeyState(VK_F7) & 0x8000) != 0) {
break;
}
Sleep(1);
}
FreeLibraryAndExitThread(Module::_hDllModule, 0);
}
我知道这是快速而肮脏的方式,但现在已足够了。这是D等价物:
// module.d
private void quitThread()
{
while (true) {
// KeyPress
if (GetAsyncKeyState(VK_F7) & 0x8000) {
break;
}
Sleep(1);
}
FreeLibraryAndExitThread(_hModule, 0);
}
这是预期的行为吗?我该如何卸载D Dll?