【error】LNK2005: already defined in LIBCMTD.lib(typinfo.obj)

转载请注明出处:http://blog.csdn.net/xiaowei_cqu/article/details/7568333

这个问题的来源是这样的,我想要静态编译发布我程序,就是Runtime Library 设置为:Multi-threaded Debug (/MTd)

程序悲剧的报错了:

Error 2 error LNK2005: "private: __thiscall type_info::type_info(class type_info const &)" (??0type_info@@AAE@ABV0@@Z) already defined in LIBCMTD.lib(typinfo.obj)

Error 3 error LNK2005: "private: class type_info & __thiscall type_info::operator=(class type_info const &)" (??4type_info@@AAEAAV0@ABV0@@Z) already defined in LIBCMTD.lib(typinfo.obj)

一开始搜到这位可耐的网友:http://sanqiaosiyou.blog.sohu.com/161348612.html

大致是两种库一起使用的问题,解决方案很粗暴,把libcmtd 直接Ignore 掉

Project Settings: -> Configration Properties -> Linker -> Input -> Ignore Specific Library: libcmtd

然后悲剧的通篇都是外部引用错误:

error LNK2019: unresolved external symbol _ungetc referenced in function "bool __cdecl std::_Ungetc<char>(char const &,struct _iobuf *)" (??$_Ungetc@D@std@@YA_NABDPAU_iobuf@@@Z)

很明显,我要用libcmtd!!!

网友说:libcmtd 这个库有时候不能忽略,忽略后会有不能解析的外部符号错误;其实有个方便的方法 链接时加入参数 /FORCE:MULTIPLE

然后我找了N长时间居然不知道怎么在vs2010里设置链接时的参数。。。。悲剧。。。。。

这中间还有个插曲

出现错误:Error 2 error LNK1181: cannot open input file 'kernel32.lib'

对于这个问题,这位辛勤的小网友带我饶了很多路:http://blogs.msdn.com/b/saurabh_singh/archive/2009/01/30/getting-fatal-error-lnk1181-cannot-open-input-file-kernel32-lib.aspx

后来我在C盘找到这个 kernel32.lib 文件把地址添加到了Linker->Input里面,

又出现 Error 2 error LNK1181: cannot open input file '******.lib'

貌似都是SDK里的lib,后来终于发现原来我不小心改掉了 Linker->Input->Additional Dependencies 里原本默认要加载的库:


要选上这个框!

再回到原来重复定义的问题

错误的大致意思是一个东西在 里重复定义了LIBCMTD.lib,报错的是msvcrtd.lib,所以改一下两个加载的顺序应该就可以。

然后发现VS2010默认加载的库配置是不能改的。。。。。

于是用了个很笨的方法:

先在Configuration Properties->Liner->Input->Ignore Specific Default Libraries中输入:LIBCMTD.lib;msvcrtd.lib

就是把这两个冲突库Ignore掉

再在Configuration Properties->Liner->Input->Additional Dependecies中添加:msvcrtd.lib;LIBCMTD.lib

把他们按不冲突的顺序再添加进来

这种无聊的方法还是有效的解决了问题

========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========

哈哈~


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值