新增SDK 错误解决办法

分类: C++ Win322009-10-25 16:10 3348人阅读 评论(6) 收藏 举报

      今天在写一个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,呵呵。

原文链接: https://www.cnblogs.com/BeginGame/archive/2011/09/25/2190218.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    新增SDK 错误解决办法

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/33093

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月8日 上午10:11
下一篇 2023年2月8日 上午10:11

相关推荐