VC++使用静态库,msvcrt.lib连接错误

一个库被编译成了静态库,在工程中使用该静态库,进行链接的时候报如下错误

msvcrt.lib(ti_inst.obj) : error LNK2005: "private: __thiscall type_info::type_info(class type_info const &)" (??0type_info@@AAE@ABV0@@Z) 已经在 libcmt.lib(typinfo.obj) 中定义

1>msvcrt.lib(ti_inst.obj) : error LNK2005: "private: class type_info & __thiscall type_info::operator=(class type_info const &)" (??4type_info@@AAEAAV0@ABV0@@Z) 已经在 libcmt.lib(typinfo.obj) 中定义
1>msvcrt.lib(MSVCR80.dll) : error LNK2005: _malloc 已经在 libcmt.lib(malloc.obj) 中定义
1>   正在创建库 ./lib/runsoftengine.lib 和对象 ./lib/runsoftengine.exp


解决办法:

工程属性->链接器->输入->忽略特定库中加入 msvcrt.lib 即可

====================================================================================

今天自己在编辑一个wxWidgets的项目时,进行编译后,提示链接错误,错误的大致信息时说libcmt.lib里的一些符号重复定义,google搜索一下,说是由于没有启用多线程支持,于是在项目属性-->C/C++-->代码生成-->运行时库,设置值为“多线程(/MT)”,然后再编译,真的通过了。看了分析,是由于单线程时,libcmt.lib和msvcrt.lib都会被链接,但这两者中有很多符号名称一致,导致重复定义的错误,如果选择支持多线程,则msvcrt.lib不会被链接。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值