如果使用共享MFC规则的DLL没有自动生成'dllmain'函数,你可以手动添加该函数来处理'DLL_PROCESS_DETACH'。

首先,在你的DLL项目中创建一个新的源文件(例如'dllmain.cpp'),然后在该文件中定义'dllmain'函数。以下是一个示例:

#include <afxwin.h>

BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
{
    switch (ul_reason_for_call)
    {
    case DLL_PROCESS_ATTACH:
        // DLL加载时的处理
        break;

    case DLL_THREAD_ATTACH:
        // 线程创建时的处理
        break;

    case DLL_THREAD_DETACH:
        // 线程销毁时的处理
        break;

    case DLL_PROCESS_DETACH:
        // DLL卸载时的处理
        // 在这里进行你的处理逻辑
        break;
    }

    return TRUE;
}

在'DLL_PROCESS_DETACH'的'case'分支中,你可以添加你需要的处理逻辑。例如,释放资源、关闭文件、清理内存等等。根据你的实际需求,你可以在这里编写你的代码。

最后,确保将'dllmain.cpp'添加到你的DLL项目中,并在项目设置中将其设置为源文件。这样,当你的DLL被卸载时,'dllmain'函数中的代码将会被执行。

请注意,如果你使用共享MFC规则创建的DLL,你可能已经有一个名为'MyDll.cpp'的源文件,其中已经定义了一个'CDllApp'类。在这种情况下,你可以将'dllmain'函数添加到'MyDll.cpp'文件中,而不是创建一个新的源文件。

共享MFC DLL 手动添加 dllmain 函数处理 DLL_PROCESS_DETACH

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

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