LINK1123:failure during conversion to COFF:file invalid or corrupt

今天用Visual Studio 2010編譯一個VC++6.0工程時突然遇到下面這個編譯錯誤。
fatal error LINK1123:failure during conversion to COFF:file invalid or corrupt



試了很多方法都沒有用,包括微軟官方的說明
http://blog.csdn.net/xiaowei_cqu/article/details/18229649
http://fisnikhasani.com/error-lnk1123-failure-during-conversion-to-coff-file-invalid-or-corrupt/
http://msdn.microsoft.com/en-us/library/7dz62kfh.aspx

開始以爲自己的項目文件從VC6.0轉換成VS2010出問題了,可以通過編譯選項解決,後來新建一個新的空C/C++項目,發現也是相同的問題,知道是VS環境出問題了。
繼續調查發現原來是VS用來進行COFF格式轉換的工具cvtres.exe被破壞了。
在資源管理器直接執行cvtres.exe,就彈出窗口說進程啓動失敗。



cvtres.exe被破壞的原因是因爲我剛裝了.Net Framework 4.5,.Net Framework 4.5自帶了一個更新的cvtres.exe,卻讓原來VS2010中的cvtres.exe動不起來了。並且在VS編譯時,VS自帶的cvtres.exe在PATH環境變量的前面,所以COFF轉換失敗(不過VS報的錯誤太誤導人了)

下圖是所有cvtres.exe文件所在的目錄。


VS2010中的cvtres.exe(已經壞了)
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\cvtres.exe
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64\cvtres.exe

.Net Framework 4.5安裝的cvtres.exe(可以用)
C:\Windows\Microsoft.NET\Framework\v4.0.30319\cvtres.exe
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\cvtres.exe

.Net Framework中的cvtres.exe是好的,如下:



知道原因就很好解決了。把VS2010中的兩個cvtres.exe刪掉或者改名,讓VS可以使用.Net Framework 4.5安裝的cvtres.exe,就OK了。當然,可以拷貝Framwork中的cvtres.exe覆蓋VS2010中的同名文件。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章