error LNK2005: void __cdecl operator错误处理

error LNK2005: void __cdecl operator错误处理

在Visual studio上编程时有时会出现:nafxcwd.lib(afxmem.obj) : error LNK2005: "void __cdecl operator delete(void *)" (??3@YAXPAX@Z) 已经在 LIBCMTD.lib(dbgdel.obj) 中定义;错误,这主要是因为两个库的顺序问题,改下属性就好了。

在用Visual Studio写MFC程序时出现delete等操作符重定义的情况,下面是debug下的错误情况

而在Release下可能出现的情况是这样的

这种情况时右键项目选择属性

在属性页选择:配置属性->链接器->输入,

然后在忽略特定默认库里添加nafxcwd.lib;LIBCMTD.lib,而在附加依赖项里再加入nafxcwd.lib;LIBCMTD.lib;,顺序很重要,本来的顺序是LIBCMTD.lib在前,现在是nafxcwd.lib在先。

Release下也是一样,忽略特定默认库里添加nafxcw.lib;LIBCMT.lib,而在附加依赖项里再加入nafxcw.lib;LIBCMT.lib;