【VC疑難】LINK : fatal error LNK1123: failure during conversion to COFF: file invalid

問題描述:剛上課第一天,老師讓自己新建一個dialog,空程序運行,開始看老師演示的時候還在想這有什麼意思,晚上很不在意的File→New一個,一運行就傻眼了,balabala,fatal error就出來了,慣用手法,Ctrl+C Then Ctrl+V,一看遇到的還不少

Lofter上的寫的挺清晰http://tenz.blog.163.com/blog/static/60802417201231093752741/

Debug下編譯, 會碰到的問題:

1. fatal error LNK1107: 文件無效或損壞: 無法在 0x2E0 處讀取

解決方法:

項目-->項目屬性-->配置屬性-->清單工具-->使用FAT32解決方法爲 是;

如果是編譯.Bundles\Format7z的工程裏,在Asm/7zCrcOpt.asm上右鍵屬性,去掉常規-->命令行中的-omf 

同樣在Asm/AesOpt.asm中去掉-c以外的選項

原因:vs6和vs2008區別造成的,參數-omf爲vc6服務的。

2. LINK : fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt

解決方法:

項目-->工程屬性->配置屬性-> 清單工具->輸入和輸出->嵌入清單,選擇[否](博主注:Project→Dialog Properties→Configuration Properties→Manifest Tool→Input and Output →Embed Manifest)

項目-->項目屬性-->配置屬性-->清單工具-->使用FAT32解決方法爲 是;

 

編譯完之後,debug版在啓動7zg.exe進行調試的時候會報一個錯誤, 提示 丟失msvcrtd90.dll文件, 只需要將

項目屬性-->配置屬性-->C/C++-->代碼生成-->運行時庫 改成多線程調試(Mtd)即可.


照着找了下,誒,還是不行,然後又找啊找,這位仁兄又有個想法http://www.th7.cn/system/win/201411/77471.shtml

使用VisualStudio 編譯鏈接中可能出現如下錯誤:
LINK : fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt
網上有如下解決方法:
1. disable incremental linking
 
Project Properties  -> Configuration Properties  -> Linker (General)  -> Enable Incremental Linking -> "No (/INCREMENTAL:NO)"
2. turning off "Embed Manifest"
 
 
但是我使用這兩種方法均不奏效.
Issue root cause: 系統更新或軟件升級中,造成有多於一個版本的 Utility: cvtres.exe
D:/Program Files (x86)/Microsoft Visual Studio 10.0/VC/bin/cvtres.exe
C:/Windows/Microsoft.NET/Framework/v4.0.30319/cvtres.exe
 
而因不當造成VS目錄下的cvtres.exe不在work.如果該Utinity在路徑的前面,linker覺得需要轉換一個.res文件爲COFF對象格式,link將失敗,顯示error: LNK1123
 
方法: 對VS下舊的Utility cvtres.exe刪除或者重命名爲cvtres.exe_old.或者重新安排 PATH 變量.
 
參考文獻:
http://stackoverflow.com/questions/10888391/error-link-fatal-error-lnk1123-failure-during-conversion-to-coff-file-inval
-------------------
 
關於 error: LNK1123: failure during conversion to COFF: file invalid or corrupt 錯誤的解決方案【Qt】【 VS2010】
 
近日因爲換裝硬盤重裝了系統,於是不得不重新安裝VS2010 Qt 這些個開發工具。安裝過程都沒什麼問題,安裝完了順手點了個例子測試下好沒好用,於是就出現了標題中的錯誤提示。之前處理過一次,時間久了就忘了,於是又一頓搜索解決了。這次長個心眼,記下,免得以後又忘了(寫博客隨筆什麼的不好堅持啊,不得不鄙視下自己 )。

 
  正題開始。提示說明在轉換到COFF文件因爲錯誤失敗了(VS2010裝好了,一般是不會有[file invalid] 錯的)。
  而完成轉換工作的是cvtres.exe這個程序。出現上面錯誤的根本原因是系統中存在有多個版本的 cvtres.exe。
  系統目錄下版本:C:/Windows/Microsoft.NET/Framework/v4.0.30319/cvtres.exe
   VS目錄下版本: C:/Program Files (x86)/Microsoft Visual Studio 10.0/VC/BIN/cvtres.exe
  如果是64位系統,那麼還有個在 C:/Windows/Microsoft.NET/Framework64/v4.0.30319/cvtres.exe
  不過Framework 和Framework64下倆個版本是一致的,而且由於系統更新,一般比VS目錄下的版本新。

 
 

 

  到此解決方法也就明顯簡單了,只需要將舊版的重命名或者刪除,不過我一般習慣重命名,比如在後面加上 -old。


然後一想好像是啊,找啊找,居然沒找到那個路徑,然後只好Listary一下,找到了,突然想起當時爲了保護c盤給裝到D盤了,一改名,誒,OK了!再把上面那個設置的給改了,誒,還是OK,先知其然吧
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章