VC7/VC8开发的库在VC6中的使用问题

from:http://blog.csdn.net/freefalcon/article/details/1421662

现在,微软一些新的SDK基本上都是用VC7/VC8(即VS .NET 2003/VS 2005)来开发的,当我们用VC6使用这些库的Debug版本时就会发生链接错误,对于我们自己用VC7/VC8开发静态库或动态库也存在同样的问题,这主要是由于VC7/VC8使用了不同的调试信息格式以及增加了一些安全检测机制造成的。

我们可以在VC7/VC8中修改一下工程的配置信息使其能够被VC6使用,具体操作如下:

1. 打开工程设置界面,选择C/C++属性页,将“常规(General) -> 调试信息格式(Debug Information Format)” 改为“禁用(Disabled)”。

如果不进行此处修改,VC6在链接时将出现如下错误:

fatal error LNK1103: debugging information corrupt; recompile module

2. 将“代码生成(Code Generation) -> 基本运行时检查(Basic Runtime Checks)”改为“默认(Default)”。

如果不进行此处修改,VC6在链接时将出现如下错误:

error LNK2001: unresolved external symbol __RTC_Shutdown 
error LNK2001: unresolved external symbol __RTC_InitBase 
error LNK2001: unresolved external symbol __RTC_CheckEsp 
error LNK2001: unresolved external symbol @_RTC_CheckStackVars@8 
error LNK2001: unresolved external symbol __RTC_UninitUse

3. 将“缓冲区安全检查(Buffer Cecurity Check No)”改为“否(No)”。

如果不进行此处修改,VC6在链接时将出现如下错误:

error LNK2001: unresolved external symbol ___security_cookie
error LNK2001: unresolved external symbol @__security_check_cookie@4

经过上述修改后,实际上生成的Debug版本已经不含调试信息了,因此我们也可以让VC6下的Debug版直接使用VC7/VC8编译的Release版,不过要注意修改Release版的运行期库类型,使其与VC6一致。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值