uafxcwd.lib(afxmem.obj) : error LNK2005 解決方法


項目為非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.”

 

解決辦法是:

 

轉載:http://blog.sina.com.cn/s/blog_493667730100ywt9.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM