visual-studio-2010 - professional下載 - visual studio教學




在安裝Visual Studio 2012 Release Preview之後出現錯誤“LINK:致命錯誤LNK1123:在轉換為COFF期間失敗:文件無效或損壞” (17)

+1給用戶簡短回答對我有用!

我試圖用msbuild /v:diag做一些調試,我看到MSBuild試圖在可執行文件中嵌入一個清單,在鏈接器命令行上使用<somename> .dll.embed.manifest.res,這是從<somename> .dll.embed.manifest構建的資源文件。 但清單文件是一個空的Unicode文本文件。 (即,帶有Unicode 0xFEFF前綴的兩字節文件)

所以根本問題似乎與該清單文件沒有被生成有關,或者在<somename> .dll.intermediate.manifest應該被使用時使用。

替代解決方案似乎是關閉屬性,清單工具,輸入和輸出下的“嵌入清單”選項。

我已經安裝了Visual Studio 2012 Release Preview,並且它看起來很好,但現在當我嘗試使用Visual Studio 2010編譯C ++項目時,出現以下錯誤消息:

鏈接:致命錯誤LNK1123:在轉換為COFF期間失敗:文件無效或損壞

我不是100%肯定的,但它似乎與其中包含.rc (資源)文件的項目有關。

我試圖從添加/刪除程序修復Visual Studio 2010並重新啟動,但這沒有任何作用。

如果設置為使用Visual Studio 2010工具集時,如果使用Visual Studio 2012 RC編譯C ++項目,我也會得到相同的錯誤。 升級到Visual Studio 2011工具集修復了這個問題(但我當然不想為生產代碼做這件事)。

更新:我卸載了Visual Studio 2012 ,重新啟動,問題仍然存在! 幫幫我!


這個MSDN線程解釋瞭如何解決它。

總結:

  • 通過轉到禁用增量鏈接

    Project Properties 
       -> Configuration Properties 
           -> Linker (General) 
              -> Enable Incremental Linking -> "No (/INCREMENTAL:NO)"
    
  • 或者安裝VS2010 SP1。

編輯(@CraigRinger):請注意,安裝VS 2010 SP1將刪除64位編譯器 。 您需要安裝VS 2010 SP1編譯器包以使其恢復。

這會影響Microsoft Windows SDK 7.1 for Windows 7和.NET 4.0以及Visual Studio 2010


在Enable Incremental Linking - >“No(/ INCREMENTAL:NO)”之後,它不起作用,但是在我刪除了rc文件後它適用於我。


在更新.NET後,我遇到了同樣的問題:我先卸載了.NET框架,從visualstudio.com下載了Visual Studio並選擇了“修復”。

NET框架與視覺工作室自動安裝 - >現在它工作正常!


如果你已經安裝了Visual Studio 2012 RC,那麼它安裝了.NET 4.5 RC。

卸載.NET 4.5 RC,然後安裝您需要的版本(4.0 for VS 2010)。 這應該可以解決您遇到的任何問題。

這解決了同樣的問題。 沒有必要卸載Visual Studio。


如果禁用增量鏈接不適用於您,並且關閉“Embed Manifest”也不起作用,那麼請搜索CVTRES.exe的多個版本。

通過使用/ VERBOSE鏈接器選項進行調試,我發現鏈接器在嘗試調用cvtres時寫入錯誤消息,失敗。

事實證明,我在我的路徑中有兩個版本的這個工具。 一個位於C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\BIN\cvtres.exe ,另一個位於C:\Windows\Microsoft.NET\Framework\v4.0.30319\cvtres.exe 。 安裝VS2012後,VS2010版本的cvtres.exe將不再起作用。 如果這是您路徑中的第一個,並且鏈接器決定需要將.res文件轉換為COFF對象格式,則該鏈接將失敗,並顯示LNK1123。

(真的很煩人,錯誤信息與實際問題無關,但這對於Microsoft產品並不罕見)。

只需刪除/重命名舊版本的實用程序,或者重新安排PATH變量,以便首先使用該版本。

請注意,對於x64工具構建,您可能還需要檢查C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64 ,其中有另一個cvtres.exe


對於那些使用OpenGL SuperBible第6個源代碼示例尋找解決方案的解決方案,解決方案是使用Release而不是Debug進行構建。 所有項目都禁用發布版本中的增量鏈接選項。


我使用Windows SDK進行核心Win32編程,並且因“未知”原因安裝了.NET 4.5。 我已經卸載並安裝了4.0像以前的答案,是的,它也適用於我。

我大吃一驚,不得不使用無用的.NET框架來使用SDK構建Win32應用程序。


我最終通過完全卸載VS2012 RC解決了這個問題,然後完全卸載了VS2010,然後重新安裝了VS2010的重新安裝。

它花了很長時間,但我現在可以再次編譯VS2010中的C ++項目了。


我沒有安裝Visual Studio 2012,但在Visual Studio 2010中仍然出現此錯誤。在安裝Visual Studio 2010 SP1後,我解決了這個問題。


我設置啟用增量鏈接“否(/ INCREMENTAL:NO)” ,它不適用於我

接下來我改變了:

Project Properties 
   -> Configuration Properties 
       -> General
          -> Platform Toolset -> "Visual Studio 2012 (v110)"

它適用於我:)


我通過執行以下操作來解決此問題:

  1. 在命令提示符下,輸入msconfig並按回車。
  2. 點擊服務標籤。
  3. 查找“應用程序體驗”並放置刻度標記(即,選擇此項以啟用)。
  4. 點擊確定。 如有必要重新啟動。

因此問題將會永遠存在。 隨機構建並調試您的C ++項目而不受任何干擾。


截至2014年1月,由於某些原因,我安裝了.NET Framework 4.5.1,但不知是由於第三方軟件安裝還是自動更新。

1月29日,我安裝了一個組件,並開始接收

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

信息。 那時候,我通過避免增量鏈接來解決問題。

1月31日,我安裝了.NET Framework 4.5.1的另一個組件,增量鏈接技巧不再適用。 然後我安裝了Visual Studio 2010 SP1,但之後問題變成:

Error   6   error LNK1104: cannot open file 'msvcrtd.lib'. 

我認為SP1弄亂了我的Visual Studio 2010安裝。

所以我卸載了.NET Framework 4.5.1,安裝了.NET Framework 4.0並卸載,然後重新安裝了Visual Studio 2010.這對我很有用。


根據MSDN論壇中的這個主題: VS2012 RC安裝打破VS2010 C ++項目 ,簡單地說,從VS2010 SP1中取出cvtres.exe

C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\cvtres.exe

或來自VS2012

C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\cvtres.exe

並將其複製到VS2010 RTM安裝中的cvtres.exe無SP1的一個)

C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\cvtres.exe

這樣,您將有效地使用更正版本的cvtres.exe ,它是11.0.51106.1。

C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64\cvtres.exe為64位版本的工具重複相同的步驟。

此解決方案是VS2010安裝SP1的替代方案 - 在某些情況下,您無法安裝SP1(即,如果您需要支持SP1之前的版本)。


總結:

Step1

Project Properties 
   -> Configuration Properties 
       -> Linker (General) 
          -> Enable Incremental Linking -> "No (/INCREMENTAL:NO)"

如果step1不起作用,請執行Step2

Project Properties 
   -> Configuration Properties 
       -> Manifest Tool (Input and Output) 
          -> Enable Incremental Linking -> "No"

如果step2不起作用,請執行Step3複製文件之一:

  1. C:\ Program Files(x86)\ Microsoft Visual Studio 11.0 \ VC \ bin \ cvtres.exe
  2. C:\ Program Files(x86)\ Microsoft Visual Studio 12.0 \ VC \ bin \ cvtres.exe
  3. C:\ Program Files(x86)\ Microsoft Visual Studio 13.0 \ VC \ bin \ cvtres.exe

    然後,替換到C:\ Program Files文件(x86)\ Microsoft Visual Studio 10.0 \ VC \ bin \ cvtres.exe與我一起,執行3步它的工作


這個問題通過刪除.NET 4.5,並用.NET 4.0取代它而神奇地解決了。 然後,我必須修復Visual Studio 2010 - 它在某種程度上正在被破壞。

我以前安裝過,然後卸載了Visual Studio 2012 - 這可能與問題有關。


重新安裝CMake為我工作。 CMake的新副本認為它應該使用Visual Studio 11而不是10。





visual-studio-2012