我有一个Visual Studio 2005解决方案,其中有两个项目。一个是静态库,另一个是用于测试静态库功能的可执行文件。静态库使用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 new[](unsigned int)" (??_U@YAPAXI@Z) already defined in libcpmtd.lib(newaop.obj)
uafxcwd.lib(afxmem.obj) : error LNK2005: "void __cdecl operator delete[](void *)" (??_V@YAXPAX@Z) already defined in LIBCMTD.lib(delete2.obj)
我不知道该如何克服这个问题。有人能解释一下为什么会出现这个错误吗?任何概述.lib文件链接的说明都将不胜感激。
cl
命令行编译控制台应用程序时遇到了这个错误。在我的库中使用了MFC的CString
后,我才遇到这个问题。感谢KB文章,我只需将我的#include
移到前面,问题就得到解决了。 - Synetech