关于遇到的Lnk 2005的解决办法

  为了测试C++中间件,需要做些公有测试函数,之前测试C#接口时就写了一些共有测试类,本以为移植过来八九不离十的,结果中间还是出现了一些问题,调试了老半天,边上网查资料边解决,最终把语法错误都解决了,结果编译后出现了链接错误:

  error LNK2005: "void __cdecl operator delete(void *)" (??3@YAXPAX@X) already defined in libcpmt.lib(delop.obj)

很久没用VC6,隐约记得出现这样的错误有可能是因为头文件路径没设好,于是开始了我的错误排查工程:

  1、先检查了Project->Settings->C/C++,Preprocessor中Additional include directories,结果该指定的Include路径都设置了。

  2、会不会是重复链接了头文件?接着将测试类之间的*.h和*.cpp的#include逐一进行顺序排查,将重复定义的include去掉并进行了重新整合。Clean后重新Build,错误依然存在!

  3、继续查,网上有说,可能是一些基础的库头文件顺序错误导致的,里面提到了一个库名libcpmt.lib,我心里顿时一亮"1?和链接错误中的库一样,有戏!"按照别人的方法进行了修改,在Project->Settings->C/C++,General的Object/library modules中最前面增加了2个静态库:Nafxcw.lib libcpmt.lib。网上还提到需要在Input的Ignore libraries中先忽略掉这2个库,我没做这个修改。编译,通过了!

       如今代码编译已无问题,但是估计执行时还会出现不少状况,今天只完成了漫漫长征路中的一步,还需要继续努力啊。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值