没有 DLLmain 时,如何处理共享 MFC DLL 的加载
如果你的共享 MFC DLL 没有提供 DLL_PROCESS_ATTACH 的处理函数 dllmain,你可以手动添加一个全局变量来模拟 DLL_PROCESS_ATTACH 的功能。
首先,在你的共享 MFC DLL 的头文件中声明一个全局变量,例如:
extern 'C' BOOL g_bDllLoaded;
然后,在你的共享 MFC DLL 的源文件中定义这个全局变量,并初始化为 FALSE:
BOOL g_bDllLoaded = FALSE;
接下来,你可以在你的共享 MFC DLL 的某个函数中检查这个全局变量的值,来模拟 DLL_PROCESS_ATTACH 的处理。例如,在你的共享 MFC DLL 的初始化函数中,你可以将 g_bDllLoaded 设置为 TRUE,并执行其他必要的初始化操作:
BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
{
if (ul_reason_for_call == DLL_PROCESS_ATTACH)
{
g_bDllLoaded = TRUE;
// 执行其他初始化操作
}
return TRUE;
}
这样,你就可以在你的共享 MFC DLL 的其他函数中使用 g_bDllLoaded 变量来判断 DLL 是否已加载,并根据需要执行相应的操作。
请注意,这只是一种模拟 DLL_PROCESS_ATTACH 功能的方法,并不是完全等同于使用 dllmain 函数处理 DLL_PROCESS_ATTACH 的方式。如果可能的话,建议在你的共享 MFC DLL 中提供一个正确实现的 dllmain 函数来处理 DLL_PROCESS_ATTACH。
原文地址: https://www.cveoy.top/t/topic/fAze 著作权归作者所有。请勿转载和采集!