fatal error LNK1103: debugging information corrupt; recompile module
今天在寫一個(gè)SetWinEventHook的程序時(shí),編譯通過,link時(shí),彈出了如下的錯(cuò)誤:
Linking...
uuid.lib(oleidl_i.obj) : fatal error LNK1103: debugging information corrupt; recompile module
????? 囧,第一反應(yīng)是google一下,看來遇到這個(gè)問題的還不少,仔細(xì)回想了下,原來前幾天寫minidump的時(shí)候,裝了一個(gè)新的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,并且設(shè)置到了最前面,也就是第一條(vc按照設(shè)置的次序來查找對(duì)應(yīng)的頭文件和庫(kù)文件,找到后,自然就不再往下找了),按網(wǎng)上說的方法做了下,果然,編release版本并沒有l(wèi)ink錯(cuò)誤,成功鏈接,刪除新設(shè)置的Include files和Library files,啟用舊的頭文件和lib文件也是沒有問題的。
????? 我的方法是,將新的sdk的include路徑依然設(shè)置在Include files的第一條,而將新的sdk的lib路徑調(diào)整到Library files中的最后一條,這樣編譯連接也沒有問題,就可以解決上述刪除新設(shè)置的路徑后無法使用新的sdk中的特性的問題(譬如我的minidump就無法編譯了,因?yàn)镮nclude files和Library files的設(shè)置對(duì)vc來說是全局的,你在一個(gè)工程修改后,另外一個(gè)工程的路徑也就變了),還有個(gè)更“革命”的方法是替換Microsoft Platform SDK for Windows XP SP2中uuid.lib為舊庫(kù)中的uuid.lib,這個(gè)方法只是說說,不建議。這樣改了之后,其實(shí)還是有隱患,從根本上來講,連接失敗的原因是新版本的lib文件和一些老的lib文件不兼容造成的,譬如在MFC下你不使用靜態(tài)庫(kù)鏈接就沒有問題,如果以后你使用新的sdk中的新特性,舊版lib文件中又沒有實(shí)現(xiàn),那又只好設(shè)置回來,總之是很麻煩的,真正革命性的做法是使用VS2005或者VS2008,呵呵。
總結(jié)
以上是生活随笔為你收集整理的fatal error LNK1103: debugging information corrupt; recompile module的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: windows7不支持AllocateA
- 下一篇: 安装SQL2000 提示 以前的某个程序