Visual Studio 2013中new和delete函数链接错误

    在本来正常的工程里面新加入一个源文件(即使是一个空的.cpp文件),编译时就出现如下错误,去掉该源文件后,编译正常。

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


    按照网上的说明,在工程属性中添加/verbose:lib项,查看本工程链接的顺序。



    在编译输出窗口看到c库在mfc库之前链接导致错误。

1>      Searching C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\lib\LIBCMTD.lib:
1>      Searching C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\lib\OLDNAMES.lib:
1>      Searching C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\atlmfc\lib\uafxcwd.lib:
1>  
1>  Finished searching libraries
1>  Generating code
1>  Finished generating code
1>uafxcwd.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new(unsigned int)" (??2@YAPAXI@Z) already defined in LIBCMTD.lib(new.obj)
1>uafxcwd.lib(afxmem.obj) : error LNK2005: "void __cdecl operator delete(void *)" (??3@YAXPAX@Z) already defined in LIBCMTD.lib(dbgdel.obj)


    网上的解决方案,看起来太复杂,要设置链接库顺序,例如:

    http://m.blog.csdn.net/blog/mail_cm/32910803


    我的方法,记事本打开,.vcxproj文件,rotate.h本来是在XXXMFC.h之前的,将其移到最后,和其他C工程文件放一起,这样Visual Studio在编译的时候,先链接MFC库,后链接C库,问题解决!

    



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值