DLL_PROCESS_DETACH 未调用 C++
Posted
技术标签:
【中文标题】DLL_PROCESS_DETACH 未调用 C++【英文标题】:DLL_PROCESS_DETACH not called C++ 【发布时间】:2018-10-03 13:35:19 【问题描述】:喂!
我制作了一个简单的附加/分离脚本,但如果我按 F11,DLL 会被杀死,但不是以“正常方式”,DLL_PROCES_DETACH 不会被调用
可能是什么问题?
#include <Windows.h>
#include <thread>
HMODULE hMod = nullptr;
bool bDebugMode = true;
bool bLeave = false;
void Setup(void);
void Setup()
while (true)
if (GetAsyncKeyState(VK_F11) & 1)
std::this_thread::sleep_for(std::chrono::milliseconds(200));
FreeLibraryAndExitThread(hMod, 1);
std::this_thread::sleep_for(std::chrono::milliseconds(10));
BOOL APIENTRY DllMain(HMODULE hModule, DWORD dwReason, LPVOID lpReserved)
switch (dwReason)
case DLL_PROCESS_ATTACH:
hMod = hModule;
DisableThreadLibraryCalls(hModule);
if(bDebugMode)
MessageBox(NULL, "Attach", "Attached", MB_OK);
CreateThread(0, 0, (LPTHREAD_START_ROUTINE)Setup, 0, 0, 0); break;
case DLL_THREAD_DETACH:
Beep(500, 100);
if(bDebugMode)
MessageBox(NULL, "Detach", "Detach called!", MB_OK); break;
return true;
任何帮助将不胜感激!
【问题讨论】:
【参考方案1】:你的代码很好,除了你的 switch 语句中没有 case DLL_PROCESS_DETACH。有时只需要另一双眼睛就能看到错误。
编辑:您应该能够用 DLL_PROCESS_DETACH 切换 DLL_THREAD_DETACH,一切都会正常工作。
【讨论】:
以上是关于DLL_PROCESS_DETACH 未调用 C++的主要内容,如果未能解决你的问题,请参考以下文章
未调用 didEnterRegion 但在目标 C 中调用了 didExitRegion
致命错误:未捕获的错误:调用 C:\xampp\htdocs\ 中未定义的函数 mysql_connect()