新增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,呵呵。

posted on 2011-09-25 14:00  我要穿越  阅读(3048)  评论(0编辑  收藏  举报

导航