項目為非MFC,但要用到MFC的庫,使用過程中遇到的問題總結一下
uafxcwd.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new(unsigned int)" (??2@YAPAXI@Z) already defined in LIBCMTD.lib(new.obj)
uafxcwd.lib(afxmem.obj) : error LNK2005: "void __cdecl operator delete(void *)" (??3@YAXPAX@Z) already defined in LIBCMTD.lib(dbgdel.obj)
uafxcwd.lib(afxmem.obj) : error LNK2005: "void __cdecl operator delete[](void *)" (??_V@YAXPAX@Z) already defined in LIBCMTD.lib(delete2.obj)
原因:
CRT 庫對 new、delete 和 DllMain 函數使用弱外部鏈接。MFC 庫也包含 new、delete 和 DllMain 函數。這些函數要求先鏈接 MFC 庫,然后再鏈接 CRT 庫。
當 C 運行時 (CRT) 庫和 Microsoft 基礎類 (MFC) 庫的鏈接順序有誤時,可能會出現以下 LNK2005 錯誤。
解決方法:
強制鏈接器按照正確的順序鏈接庫!
項目->屬性->鏈接器->輸入:附加依賴項添加 uafxcwd.lib
問題解決!
注意:uafxcwd.lib 庫是 Debug 版本的,Release 版本的是 uafxcw.lib
轉載:http://blog.sina.com.cn/s/blog_6f50984a0100y9br.html(這個解決了項目問題)
轉載:http://blog.csdn.net/chenyujing1234/article/details/8003413
這兩篇文章大家參考設置,根據自己項目進行驗證
注:release時還會出現時“error LNK2026: module unsafe for SAFESEH image.”
解決辦法是: