.net framework版本衝突問題 >LINK : fatal error LNK1123: 轉換到 COFF 期間失敗: 文件無效或損壞

Visual Studio錯誤描述:

>LINK : fatal error LNK1123: 轉換到 COFF 期間失敗: 文件無效或損壞

 

解釋:

這個問題最常出現在安裝有/安裝過Vistual Studio 2010 以及 Vistual Studio 2012 的電腦上。

從字面意思來看,出錯是因爲轉換到COFF文件時出錯。網上說跟cvtres.exe這個程序有關,按照我理解,是跟.NET Framework有關。

接下來說一下我的理解。

1、首先簡單說下,Windows系統是通過環境變量來找到一些程序運行所需的庫和程序等。當多個環境變量中的路徑下出現同一動態庫或者程序等文件,路徑在前的路徑下的文件優先被調用。

2、需要說明的是,.NET Framework 4.0目錄下和Vistual Studio 2010 目錄下均存在cvtres.exe文件。

以下爲Vistual Studio 2010安裝目錄(僅供參考):

C:\Program Files (x86)\Microsoft Visual Studio 10.0\

 以下爲.NET Framework 4.5安裝目錄(僅供參考):

C:\windows\Microsoft.NET\Framework\v4.0.30319\

3、Vistual Studio 2010 安裝時會默認安裝.NET Framework 4.0,Vistual Studio 2010 和 .NET Framework 4.0 目錄下的cvtres.exe是一樣的,並且它們路徑均被添加到環境變量 。此時環境變量最靠前的是.NET Framework 4.0 的安裝路徑。

4、然後Vistual Studio 2012 安裝時會默認安裝.NET Framework 4.5,Vistual Studio 2012 和 .NET Framework 4.5 目錄下的cvtres.exe是一樣的,並且它們路徑均被添加到環境變量 。此時環境變量最靠前的是.NET Framework 4.5 的安裝路徑。

5、按照我的理解,Vistual Studio安裝目錄下的cvtres.exe必須跟環境變量最靠前的是.NET Framework路徑下的 cvtres.exe一致。

 

所以解決方案來了,

1、對於現在系統中Vistual Studio 2010 和 Vistual Studio 2012 並存的 情況,一切以.NET Framework 4.5版本優先。可以採用以下兩種方式解決:

(1)升級Vistual Studio 2010 到 Vistual Studio 2010 SP1,Vistual Studio 2010 SP1中默認搭配.NET Framework 4.5環境,其中cvtres.exe是.NET Framework 4.5版本的。

(2)直接使Vistual Studio 2010 安裝目錄下的cvtres.exe失效,可以通過改名、刪除等方式達到目的。

2、對於現在系統中只有 Vistual Studio 2010 (曾安裝過 Vistual Studio 2012,當時附帶安裝了.NET Framework 4.5, 但是後來卸載了Vistual Studio 2012,.NET Framework 4.5不會被自動刪除)的情況,一切以.NET Framework 4.0版本優先。可以採用以下兩種方式解決:

(1)卸載.NET Framework 4.5,安裝上.NET Framework 4.0,解決。

(2)在環境變量中將.NET Framework 4.0(假如存在的話)安裝路徑放在.NET Framework 4.5前面,優先使用.NET Framework 4.0路徑下的文件。

(3)不推薦:非得不聽建議使用.NET Framework 4.5版本,那好,直接使Vistual Studio 2010 安裝目錄下的cvtres.exe失效,可以通過改名、刪除等方式達到目的。 這樣Vistual Studio 2010 用的是.NET Framework 4.5版本的cvtres.exe,不清楚後續有啥問題。

當然還有修改工程屬性爲“不使用增量庫”的,這個我不認可,所以這裏就不寫了。

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