最近在一个程序编译时 经常遇到lnk2005的错误。反正编译错误是最让人郁闷的。
每次的可能原因还不一样。这个程序以前编译也遇到过这个问题。今天搞了半天才想起来为啥。
错误现象
nafxcw.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new(unsigned int)" (??2@YAPAXI@Z) already defined in LIBCMT.lib(new.obj)
nafxcw.lib(afxmem.obj) : error LNK2005: "void __cdecl operator delete(void *)" (??3@YAXPAX@Z) already defined in LIBCMT.lib(delete.obj)
Creating library ../../bin_r/lsp.lib and object ../../bin_r/lsp.exp
一种解决方案是强制规定他的库,忽略上面的其中一个库。
今天这个不能那么解决。
主要是由于某些公共代码中给其他的类用了stdafx.h头文件。但是这个工程中不需要使用。 如是编译时就有问题了。唉~stdafx的问题真烦。
解决方法就是把这些给注释掉。不要试图用#ifdef 来解决 因为vc编译器会把 #include "stdafx.h"前面的给忽略。
每次的可能原因还不一样。这个程序以前编译也遇到过这个问题。今天搞了半天才想起来为啥。
错误现象
nafxcw.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new(unsigned int)" (??2@YAPAXI@Z) already defined in LIBCMT.lib(new.obj)
nafxcw.lib(afxmem.obj) : error LNK2005: "void __cdecl operator delete(void *)" (??3@YAXPAX@Z) already defined in LIBCMT.lib(delete.obj)
Creating library ../../bin_r/lsp.lib and object ../../bin_r/lsp.exp
一种解决方案是强制规定他的库,忽略上面的其中一个库。
今天这个不能那么解决。
主要是由于某些公共代码中给其他的类用了stdafx.h头文件。但是这个工程中不需要使用。 如是编译时就有问题了。唉~stdafx的问题真烦。
解决方法就是把这些给注释掉。不要试图用#ifdef 来解决 因为vc编译器会把 #include "stdafx.h"前面的给忽略。