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 ) 

 

 

posted @ 2013-11-21 17:01  王志科  阅读(1098)  评论(0编辑  收藏  举报