1>LINK : E:\tj.client\tj.client\client\ItemFactoryD.exe not found or not built by the last incremental link; performing full link
1>nafxcwd.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new(unsigned int)" (
??2@YAPAXI@Z) already defined in LIBCMTD.lib(new.obj)
1>nafxcwd.lib(afxmem.obj) : error LNK2005: "void __cdecl operator delete(void *)" (
??3@YAXPAX@Z) already defined in LIBCMTD.lib(dbgdel.obj)
1>nafxcwd.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new[](unsigned int)" (
??_U@YAPAXI@Z) already defined in libcpmtd.lib(newaop.obj)
1>nafxcwd.lib(afxmem.obj) : error LNK2005: "void __cdecl operator delete[](void *)" (
??_V@YAXPAX@Z) already defined in LIBCMTD.lib(delete2.obj)
使用第三方的庫造成的。這種情況主要是C運(yùn)行期函數(shù)庫和MFC的庫沖突造成的。具體的辦法就是將那個(gè)提示出錯(cuò)的庫放到另外一個(gè)庫的前面。另外選擇不同的C 函數(shù)庫,可能會(huì)引起這個(gè)錯(cuò)誤。微軟和C有兩種C運(yùn)行期函數(shù)庫,一種是普通的函數(shù)庫:LIBC.LIB,不支持多線程。另外一種是支持多線程的: msvcrt.lib。如果一個(gè)工程里,這兩種函數(shù)庫混合使用,可能會(huì)引起這個(gè)錯(cuò)誤,一般情況下它需要MFC的庫先于C運(yùn)行期函數(shù)庫被鏈接,因此建議使用支持多線程的msvcrt.lib。所以在使用第三方的庫之前首先要知道它鏈接的是什么庫,否則就可能造成LNK2005錯(cuò)誤。
方法:可以將project->settings->general下面的use of mfc 設(shè)置為use mfc in a shared dll,并且將c++欄下的code generation設(shè)置為mdd(multi-thread debug).