在 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 格式轉換失敗。
cvtres.exe 版本:wmic datafile where name="C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\VC\\bin\\cvtres.exe" get Versionwmic datafile where name="C:\\Windows\\Microsoft.NET\\Framework\\v4.0.30319\\cvtres.exe" get Versionrename "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\cvtres.exe" cvtres.exe.oldPATH 環境變數,確保 .NET Framework 目錄優先於 VS2010 VC 目錄。
清理解決方案 → 重新建置,錯誤應消失。後續新專案亦不會再遇到此問題。
LNK1123 本質是 cvtres.exe 版本不匹配。刪除舊版 cvtres.exe 為永久解法,避免每個專案都需修改連結器設定。