2012年10月23日 星期二

error LNK2005 (把sqlite3.c加到vs2010 x64project中碰到的問題)

一開始的error是要拿掉precompile header
拿掉之後跑出

Error 1 error LNK2005: "void * __cdecl operator new(unsigned __int64)" (??2@YAPEAX_K@Z) already defined in LIBCMTD.lib(new.obj) C:\Users\Xerxes\Documents\Visual Studio 2010\Projects\test1\test1\uafxcwd.lib(afxmem.obj)
Error 2 error LNK2005: "void __cdecl operator delete(void *)" (??3@YAXPEAX@Z) already defined in LIBCMTD.lib(dbgdel.obj) C:\Users\Xerxes\Documents\Visual Studio 2010\Projects\test1\test1\uafxcwd.lib(afxmem.obj)
Error 3 error LNK2005: "void * __cdecl operator new[](unsigned __int64)" (??_U@YAPEAX_K@Z) already defined in LIBCMTD.lib(new2.obj) C:\Users\Xerxes\Documents\Visual Studio 2010\Projects\test1\test1\uafxcwd.lib(afxmem.obj)
Error 4 error LNK2005: "void __cdecl operator delete[](void *)" (??_V@YAXPEAX@Z) already defined in LIBCMTD.lib(delete2.obj) C:\Users\Xerxes\Documents\Visual Studio 2010\Projects\test1\test1\uafxcwd.lib(afxmem.obj)
Error 5 error LNK1169: one or more multiply defined symbols found C:\Users\Xerxes\Documents\Visual Studio 2010\Projects\test1\x64\Debug\test1.exe 1

問題在CRT和MFC library都有new delete等function, 需要先link MFC libray再link CRT


Solution:
Properties -> Linker --> Input --> Additional dependencies
加入;uafxcwd.lib;LIBCMTD.lib
順序不可以改變

參考: http://support.microsoft.com/kb/148652

沒有留言: