如果使用共享 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 事件中处理相应的逻辑。

MFC DLL 手动添加 dllmain 处理 DLL_PROCESS_DETACH 事件

原文地址: https://www.cveoy.top/t/topic/fAz6 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录