MFC DLL 手动添加 dllmain 处理 DLL_PROCESS_DETACH 事件
如果使用共享 MFC 规则的 DLL 没有自动生成 dllmain 函数,可以手动添加一个 dllmain 函数来处理 DLL_PROCESS_DETACH 事件。
首先,在 DLL 项目的源文件中创建一个新的源文件(例如 dllmain.cpp),并添加以下代码:
#include <afxwin.h>
BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
{
if (ul_reason_for_call == DLL_PROCESS_ATTACH)
{
// 初始化 MFC
if (!AfxWinInit(hModule, NULL, ::GetCommandLine(), 0))
{
return FALSE;
}
}
else if (ul_reason_for_call == DLL_PROCESS_DETACH)
{
// 在此处理 DLL_PROCESS_DETACH 事件
// ...
}
return TRUE;
}
然后,在项目属性中将“配置类型”设置为“动态库(.dll)”,并在“链接器”->“输入”->“附加依赖项”中添加“mfc42.lib”(或者适用于您的 MFC 版本的库)。
这样,当 DLL 被加载或卸载时,dllmain 函数将被调用,并且您可以在 DLL_PROCESS_DETACH 事件中处理相应的逻辑。
原文地址: https://www.cveoy.top/t/topic/fAz6 著作权归作者所有。请勿转载和采集!