LNK2005 _DllMain@12 mfcs100d.lib
起因是将之前使用 MFC 规则 DLL 的动态库都改为了 MFC 扩展 DLL,在将动态库中从 CWinApp 继承的类替换为 DllMain 函数后,就出现 LNK2005 错误,说 DllMain 函数和 mfcs100d.lib 中的 DllMain 函数重复;
网上搜索了一些答案,例如 VC6 里面在 DllMain 函数所在的文件中增加 extern "C" { int _afxForceUSRDLL; } 等均告失败,最后经过对 MFC 扩展 DLL 工程逐步增加代码编译发现是因为程序中使用了
AFX_MANAGE_STATE( AfxGetStaticModuleState( ) )
好吧,在预编译头文件里面增加了如下的代码,然后重新编译,不再报 LNK2005 错误信息了
#ifdef AFX_MANAGE_STATE # undef AFX_MANAGE_STATE #endif #define AFX_MANAGE_STATE( p )