fatal error LNK1103: debugging information corrupt; recompile module

      今天在写一个SetWinEventHook的程序时,编译通过,link时,弹出了如下的错误:

Linking...
uuid.lib(oleidl_i.obj) : fatal error LNK1103: debugging information corrupt; recompile module

      囧,第一反应是google一下,看来遇到这个问题的还不少,仔细回想了下,原来前几天写minidump的时候,装了一个新的SDK(Microsoft Platform SDK for Windows XP SP2),并且把菜单Tools->Options->下的Directories下的Include files和Library files的路径都指向了新的SDK下的路径,我的是C:/PROGRAM FILES/MICROSOFT PLATFORM SDK FOR WINDOWS XP SP2/INCLUDE和GRAM FILES/MICROSOFT PLATFORM SDK FOR WINDOWS XP SP2/LIB,并且设置到了最前面,也就是第一条(vc按照设置的次序来查找对应的头文件和库文件,找到后,自然就不再往下找了),按网上说的方法做了下,果然,编release版本并没有link错误,成功链接,删除新设置的Include files和Library files,启用旧的头文件和lib文件也是没有问题的。

      我的方法是,将新的sdk的include路径依然设置在Include files的第一条,而将新的sdk的lib路径调整到Library files中的最后一条,这样编译连接也没有问题,就可以解决上述删除新设置的路径后无法使用新的sdk中的特性的问题(譬如我的minidump就无法编译了,因为Include files和Library files的设置对vc来说是全局的,你在一个工程修改后,另外一个工程的路径也就变了),还有个更“革命”的方法是替换Microsoft Platform SDK for Windows XP SP2中uuid.lib为旧库中的uuid.lib,这个方法只是说说,不建议。这样改了之后,其实还是有隐患,从根本上来讲,连接失败的原因是新版本的lib文件和一些老的lib文件不兼容造成的,譬如在MFC下你不使用静态库链接就没有问题,如果以后你使用新的sdk中的新特性,旧版lib文件中又没有实现,那又只好设置回来,总之是很麻烦的,真正革命性的做法是使用VS2005或者VS2008,呵呵。

 

[End]

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值