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,呵呵。
總結
以上是生活随笔為你收集整理的fatal error LNK1103: debugging information corrupt; recompile module的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: windows7不支持AllocateA
- 下一篇: 安装SQL2000 提示 以前的某个程序