码迷,mamicode.com
首页 > 其他好文 > 详细

operator new[]() already defined in libcpmt.lib报错问题处理

时间:2020-01-13 23:24:14      阅读:93      评论:0      收藏:0      [点我收藏+]

标签:顺序   一个   operator   error   对话   default   怎么   module   erro   

Error:

Linking... nafxcwd.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new(unsigned int)" (??2@YAPAXI@Z) already defined in LIBCMTD.lib(new.obj)

这样的错误,明显就是两个被link到的library都提供了同名的函式。但直接ignore掉LIBCMTD.lib当然是不行的,因为它是C的library。之所以发生这个问题,是因为MFC的library和C的library相冲突,必须设定它们被link的顺序,也就是先nafxcwd.lib再LIBCMTD.lib。但是这二者都是default libraries,所以要怎么设定它们的顺序呢?我找到一个解法其实挺tricky的:先把它们分别都ignore掉,再额外将它们加入。

方法:

Project -> settings 在弹出的对话框中选择link 标签页; 然后在 link 标签页的Category 处的下拉菜单中选中input选项;在Link页签上的Ignore Libraries输入:nafxcwd.lib libcmtd.lib,再到同一页签的Object/library modules输入:nafxcwd.lib libcmtd.lib。再点击OK按钮就行了,这么一来,加入它们的顺序就成了我们所强迫设定的顺序了。

operator new[]() already defined in libcpmt.lib报错问题处理

标签:顺序   一个   operator   error   对话   default   怎么   module   erro   

原文地址:https://www.cnblogs.com/Stephen-Qin/p/12189750.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!