【发布时间】:2010-11-11 21:25:32
【问题描述】:
我有一个包含两个项目的 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 文件链接概述的解释都将受到高度赞赏。
【问题讨论】:
-
另一个(非静态库)项目是 CRT 项目吗?
-
如果其他(非静态库)项目是 CRT 项目,请查看此链接:support.microsoft.com/kb/148652
-
我在尝试使用
cl从命令行编译控制台应用程序时遇到此错误。直到我#included 我的一个使用 MFC 的CString的库时,我才拥有它。感谢知识库文章,我刚刚将我的#include向上移动并解决了问题。
标签: c++ visual-studio visual-studio-2005 lnk2005