VC編譯錯誤: libcmt.lib 已經定義

VC編譯錯誤:uafxcw.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new(unsigned int)" (??2@YAPAXI@Z) 已經在 LIBCMT.lib(new.obj) 中定義

編譯錯誤 2010-03-30 21:47:54 閱讀1801 評論0  字號: 訂閱

1>uafxcw.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new(unsigned int)" (??2@YAPAXI@Z) 已經在 LIBCMT.lib(new.obj) 中定義
1>uafxcw.lib(afxmem.obj) : error LNK2005: "void __cdecl operator delete(void *)" (??3@YAXPAX@Z) 已經在 LIBCMT.lib(delete.obj) 中定義
1>uafxcw.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new[](unsigned int)" (??_U@YAPAXI@Z) 已經在 LIBCMT.lib(new2.obj) 中定義
1>../bin/TLLogger_Unicode_Release.exe : fatal error LNK1169: 找到一個或多個多重定義的符號

 

解決方法:

http://blog.vckbase.com/zaboli/archive/2010/02/05/40921.aspx

原因:

CRT 庫對 new、delete 和 DllMain 函數使用弱外部鏈接。MFC 庫也包含 new、delete 和 DllMain 函數。這些函數要求先鏈接 MFC 庫,然後再鏈接 CRT 庫。

當 C 運行時 (CRT) 庫和 Microsoft 基礎類 (MFC) 庫的鏈接順序有誤時,可能會出現以下 LNK2005 錯誤。

解決方法:

強制鏈接器按照正確的順序鏈接庫!

project->properties->Linker->Ignore Specific Library 添加 uafxcwd.lib Libcmtd.lib (輸入- 忽略特定庫)

在Additional Dependencied添加uafxcwd.lib Libcmtd.lib (輸入- 附加選項 )

發佈了15 篇原創文章 · 獲贊 15 · 訪問量 13萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章