nafxcwd.lib(afxmem.obj) : error LNK2005

发布于 2020-05-05  62 次阅读


问题描述:

1>正在链接…

1>nafxcwd.lib(afxmem.obj) : error LNK2005: “void * __cdecl operator new(unsigned int)” () 已经在 LIBCMTD.lib(new.obj) 中定义

1>nafxcwd.lib(afxmem.obj) : error LNK2005: “void __cdecl operator delete(void *)” () 已经在 LIBCMTD.lib(dbgdel.obj) 中定义

1>nafxcwd.lib(afxmem.obj) : error LNK2005: “void * __cdecl operator new[](unsigned int)” () 已经在 libcpmtd.lib(newaop.obj) 中定义

1>nafxcwd.lib(afxmem.obj) : error LNK2005: “void __cdecl operator delete[](void *)” () 已经在 LIBCMTD.lib(delete2.obj) 中定义

 

解决方法:

是CRT库与MFC库的冲突, 让程序先链接Nafxcwd.lib,然后再链接Libcmtd.lib

方法一:

项目–属性 —连接器—输入

附加依赖项    空格Nafxcwd.lib Libcmtd.lib

忽略指定库    空格Nafxcwd.lib Libcmtd.lib

清除项目。重新编译。搞定

方法二:

解决方案二:找到并纠正出现问题的模块

要查看当前的库链接顺序,请按照下列步骤操作:

在“项目”菜单上,单击“设置”。

在“项目设置”对话框的“以下项目的设置”视图中,单击以选中出现链接错误的项目配置。

在“链接”选项卡上的“项目选项”框中键入 /verbose:lib。

重新生成项目。在链接过程中,这些库将在输出窗口中列出。

方法3

可能上面方法二的那个也要加上 也可能不加

项目–属性 —连接器—命令行 输入: /FORCE:MULTIPLE


一沙一世界,一花一天堂。君掌盛无边,刹那成永恒。