首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

解決 LINK: fatal error LNK1123: COFF 轉換失敗 - 文件無效或損壞

     編輯:關於.NET

錯誤現象

在 VS2010 專案建置時出現:

1>正在連結...
1>LINK : fatal error LNK1123: 轉換到 COFF 期間失敗: 文件無效或損壞
1>生成日誌保存在 "file://.../Debug/ShapeFill.log"
1>ShapeFill - 1 個錯誤,0 個警告

常見於:更新 VS2010、或卸載 VS2012 後重裝 VS2010 的環境。

根因分析

cvtres.exe (資源轉換工具) 版本衝突。系統中存在兩個版本:

  • C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\cvtres.exe (VS2010 版本)
  • C:\Windows\Microsoft.NET\Framework\v4.0.30319\cvtres.exe (.NET Framework 4.0 版本,較新)

連結器呼叫 cvtres.exe 處理資源檔時,若載入舊版本會導致 COFF 格式轉換失敗。

解決方案

方案一:專案層級暫時規避 (不治本)

  1. 專案右鍵 屬性 → 連結器 → 資訊清單檔 → 內嵌資訊清單 設為 否 (/MANIFEST:NO)。
  2. 重新建置。若解決則可暫時繼續開發,但建議仍執行方案二徹底修復。

方案二:移除/重命名舊版 cvtres.exe (治本)

  1. 確認系統為 64 位元作業系統。
  2. 以管理員身分開啟命令提示字元,比對兩個 cvtres.exe 版本:
    wmic datafile where name="C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\VC\\bin\\cvtres.exe" get Version
    wmic datafile where name="C:\\Windows\\Microsoft.NET\\Framework\\v4.0.30319\\cvtres.exe" get Version
  3. 刪除或重命名版本較舊的檔案 (通常是 VS2010 目錄下的)。例如:
    rename "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\cvtres.exe" cvtres.exe.old
  4. 或調整系統 PATH 環境變數,確保 .NET Framework 目錄優先於 VS2010 VC 目錄。
cvtres.exe 版本比對

驗證

清理解決方案 → 重新建置,錯誤應消失。後續新專案亦不會再遇到此問題。

總結

LNK1123 本質是 cvtres.exe 版本不匹配。刪除舊版 cvtres.exe 為永久解法,避免每個專案都需修改連結器設定。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved