C Runtime 链接库不匹配导致全局静态对象没有析构

 

用VC8编译方案,之前连接的时候,出现Libcmt 和其他一些C的实时运行库冲突,没有重视.
但后来才发现那些全局对象根本没有析构.
比如,在Debug模式下,一个子工程使用静态链接库(MTd),另一个使用动态库(MDd),则最后连接在一起时,会出现一大堆警告:库冲突.而且程序运行结束之后,全局对象根本没有析构(在析构函数中下断点).

最后将C链接库统一之后,全局静态对象可以正常析构了.

因为在main函数结束之后,C库会自动析构静态对象(好像是在atexit()函数里面执行).但是库冲突之后,可能就出现这样的问题.即使显示调用exit()或者_cexit()来做后期清理,但是结果是,全局对象没有析构.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值