web-dev-qa-db-ja.com

Visual Studio 2012リリースプレビューのインストール後にエラー 'LINK:致命的なエラーLNK1123:COFFへの変換中にエラーが発生しました:ファイルが無効または破損しています'

Visual Studio 2012 Release Previewをインストールしましたが、問題はありませんが、Visual Studio 2010を使用してC++プロジェクトをコンパイルしようとすると、次のエラーメッセージが表示されます。

LINK:致命的エラーLNK1123:COFFへの変換中に失敗しました:ファイルが無効または破損しています

100%確信が持てませんが、.rc(リソース)ファイルが含まれているプロジェクトに関連しているようです。

プログラムの追加と削除からVisual Studio 2010を修復して再起動しようとしましたが、これは効果がありません。

Visual Studio 2010ツールセットを使用するように設定されている場合に、Visual Studio 2012 RCを使用してC++プロジェクトをコンパイルした場合も同じエラーが発生します。 Visual Studio 2011ツールセットにアップグレードすると問題が解決します(ただし、もちろんプロダクションコードではこれをしたくありません)。

更新日: - Visual Studio 2012をアンインストールしました 、再起動しましたが、問題は解決しません。助けて!

526
Orion Edwards

このMSDNスレッド でそれを修正する方法を説明しています。

要約する: 

  • に移動して、増分リンクを無効にします。 

    Project Properties 
       -> Configuration Properties 
           -> Linker (General) 
              -> Enable Incremental Linking -> "No (/INCREMENTAL:NO)"
    
  • またはVS2010 SP1をインストールしてください。

編集(@CraigRinger):VS 2010 SP1をインストールすると64ビットコンパイラを削除するになることに注意してください。元に戻すには、 VS 2010 SP1コンパイラパック をインストールする必要があります。

これは、 Windows 7および.NET 4.0用のMicrosoft Windows SDK 7.1 および Visual Studio 2010 に影響します。

647
Short

インクリメンタルリンクを無効にしてもうまくいかず、 "Embed Manifest"を無効にしてもうまくいかない場合は、パスでCVTRES.exeの複数のバージョンを検索してください。

/ VERBOSEリンカオプションを使用してデバッグすることによって、リンカがcvtresを呼び出そうとして失敗したときに、そのエラーメッセージを書き込んでいることがわかりました。

私はこのユーティリティの2つのバージョンを自分の道に持っていたことがわかりました。 1つはC:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\BIN\cvtres.exe、もう1つはC:\Windows\Microsoft.NET\Framework\v4.0.30319\cvtres.exeです。 VS2012のインストール後、cvtres.exeのVS2010バージョンは機能しなくなります。それがパスの最初のもので、リンカが.resファイルをCOFFオブジェクト形式に変換する必要があると判断した場合、リンクはLNK1123で失敗します。

(エラーメッセージが実際の問題とは無関係であることを本当に悩ませますが、それはマイクロソフト製品にとって珍しいことではありません。)

古いバージョンのユーティリティを削除するか名前を変更するか、PATH変数を変更して、機能するバージョンが先にくるようにしてください。

X64ツーリングビルドでは、C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\AMD64に別のcvtres.exeがある場合にもチェックする必要があるかもしれません。

247
Die in Sente

cvtrs.exeのバージョンを確認してください。

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

間違ったバージョン:
date:03/18/2010
time:01:16 PM
size:31,048バイト 
name:cvtres.exe

正しいバージョン
date:02/21/2011
time:06:03 PM
size:31,056バイト 
name:cvtres.exe

あなたが間違ったバージョンを持っているならば、あなたは正しいバージョンをコピーするべきです:

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

そしてここでそれを交換してください:

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

すなわち.

copy "C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\cvtres.exe" "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\cvtres.exe"
49
Sid

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

このように、あなたは効果的に11.0.51106.1であるcvtres.exeの修正版を使用するでしょう。

C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\AMD64\cvtres.exeの64ビット版のツールについても同じ手順を繰り返します。

このソリューションは、VS2010用のSP1のインストールに代わるものです - 場合によっては、単にSP1をインストールできない場合があります(つまり、SP1以前のビルドをサポートする必要がある場合)。

45
mloskot

Visual Studio 2012 RCをインストールした場合は、.NET 4.5 RCもインストールされています。

.NET 4.5 RCをアンインストールし、必要なバージョンをインストールします(4.0 for VS 2010)。これはあなたが抱えている問題を解決するはずです。

これで同じ問題が解決しました。 Visual Studioをアンインストールする必要はありません。

35
B_Dubb86

これは .NET Framework 4.5が.NET Framework 4.0に取って代わっているためです。 .NET Framework 4.5を削除してVisual Studio 2010を再インストールしたところ、うまくいきました。

を参照してください。新規インストールを行うには、Visual Studio 11を完全にアンインストールします.

15
AlonSamuel

私にとっては、 'Generate Manifest'を 'No'に設定して修正しました。 (/ INCREMENTAL:NOで修正済み)

14
FractalSpace

X64を使っているのなら、 これが参考になるリソースです

これは、Microsoft .NET 4.5がVisual C++ 10と互換性がないために発生します。回避策は、Visual C++バージョンではなく.NETバージョンのcvtres.exeを実行することです。これらのファイルのVisual C++バージョンの名前を変更して、その場所に.NETバージョンをコピーすることによってこれを行いました。

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

1. C:\windows\Microsoft.NET\Framework\v4.0.30319\cvtres.exe
2. C:\windows\Microsoft.NET\Framework64\v4.0.30319\cvtres.exe
13
Richard Peck

私はVS2012 RCのフルアンインストール、VS2010のフルアンインストール、VS2010の最初からの再インストールを順に行うことで、最終的にこの問題を解決しました。

それは永遠にかかりました、しかし私は今VS2010で再びC++プロジェクトをコンパイルすることができます。

12
Orion Edwards

この問題は、 .NET 4.5を削除し、 .NET 4.0 に置き換えることで解決しました。それから私はVisual Studio 2010を修復しなければなりませんでした - それはどういうわけか壊れています。

私は以前にVisual Studio 2012をインストールしてからアンインストールしました - これは問題に関連している可能性があります。

11
Caterpillar

私はVisual Studio 2012をインストールしていませんが、それでもVisual Studio 2010でこのエラーが発生しました。VisualStudio 2010 SP1をインストールした後にこれを解決しました。

10
Saji

Microsoft Visual Studio 2010 Ultimate と同じ問題があり、 このyoutube videoに記載されている方法で解決されました

ビデオでは、ファイル名を cvtres.exe in C:¥Program Files(x86)¥Microsoft Visual Studio 10.0¥VC¥bin (in my Win7X64 matchine) cvtres-old.exeに変更することをお勧めします

8
sepideh

+1ユーザーへの短縮 答え /私のために働いた!

これをmsbuild /v:diagでデバッグしようとしましたが、 MSBuild がリンカコマンドラインの<somename> .dll.embed.manifest.resを使用して、実行可能ファイルにマニフェストを埋め込もうとしています。これは<somename> .dll.embed.manifestから作成されたリソースファイルです。しかし、マニフェストファイルは空のUnicodeテキストファイルです。 (つまり、Unicodeの0xFEFFプレフィックスを持つ2バイトファイル)

そのため、根本的な問題は、そのマニフェストファイルが生成されていないか、<somename> .dll.intermediate.manifestが使用されるべきであったときに使用されていることに関係しているようです。

別の解決策は、プロパティ、マニフェストツール、入力と出力の下の「埋め込みマニフェスト」オプションをオフにすることです。

6
Die in Sente

インクリメンタルリンクを有効にした後ではうまくいきませんでした。

5
robin.lo

2014年1月現在、いくつかの理由で.NET Framework 4.5.1をインストールしましたが、サードパーティソフトウェアのインストールによるものか自動更新によるものかわかりません。 

1月29日、私は1つのコンポーネントをインストールしました。 

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をアンインストールしてから再インストールしました。

4
JackOLantern

要約する:

Step1

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

ステップ1が機能しない場合は、ステップ2を実行してください。

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

手順2がうまくいかない場合は、手順3を実行します。次のいずれかのファイルをコピーします。

  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 に置き換えます。

4
Hung Pham

Service Packをインストールしたにもかかわらずエラーが発生している場合は、C:¥Program Files(x86)¥Microsoft Visual Studio 10.0¥VC¥binフォルダにあるcvtres.exeを削除するか、名前を変更してみてください。これは私のために働きました。

2
nerd

私の問題は、同じライブラリを含むPC上に2つのパスがあることです。両方のパスが 追加のライブラリディレクトリ in 設定プロパティ - >リンカ - >一般 に追加されました。いずれかのパスを削除すると問題が解決しました。

1
mihai

私は数回試してみて、ついにVS2010を数回アンインストールすることで問題を解決しました。私はすべてのファイルをアンインストールしたわけではないと思うので、それが初めて機能しなかったのです。 

VS2012のインストールでは、VS2010 SP1をお持ちの場合、両方のプログラムで同じプロジェクトに取り組むことはできません。プログラムは1つだけにすることをお勧めします。 

ありがとうございます。

1
Vengage

インクリメンタルリンクを有効にする / "いいえ(/ INCREMENTAL:NO)" そして、 はうまくいきません .

次に変更しました:

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

そしてそれは私のために働く:)

1
sma6871

私は中核となるWin32プログラミングにWindows SDKを使用していて、「不明」な理由で.NET 4.5をインストールしていました。私はそれをアンインストールして、前の答えのように4.0をインストールしました、そして、ええ、それも私のために働きました。

SDKを使用してWin32アプリケーションを構築するには、役に立たない.NETフレームワークを使用しなければならなかったということは、ただの自慢です。

0

私は.NETの更新後に同じ問題を抱えていました:私は最初に.NETフレームワークをアンインストールし、から visualstudio.com からvisual studioをダウンロードして "repair"を選択しました。 

NETフレームワークはビジュアルスタジオで自動的にインストールされました - >そして今それはうまく働きます!

0

以前Visual Studio 2010を使用していたマシンにVisual Studio 2017と.NET Framework 4.6をインストールした後、この問題が発生しました。

問題は、そのようなインストールの後、C:\ Windows\System32からの msvcr100_clr0400.dll というファイルが、19 Kbという非常に小さいサイズの新しいファイルで上書きされたことです。

別のビルドマシンから手動でファイルを復元した後、cvtres.exeは再び正常に機能し始めました。

0

私は次のようにしてこれを解決しました:

  1. コマンドプロンプトでmsconfigと入力してEnterキーを押します。
  2. サービスタブをクリックします。 
  3. 「Application Experience」を探してチェックマークを付けます(つまり、これを選択して有効にします)。 
  4. OKをクリックしてください。そして必要ならば再起動してください。

したがって、問題は永遠に続くでしょう。ランダムにビルドし、C++プロジェクトを何の邪魔もなしにデバッグします。

0
App Work

OpenGL SuperBibleの6番目のソースコードサンプルでこの問題の解決策を探している人のために、解決策は Debug ではなく Release に組み込まれています。すべてのプロジェクトで、 Release バージョンのインクリメンタルリンクオプションが無効になっています。

0
Gallo

CMakeを再インストールすることは私のために働きました。 CMakeの新しいコピーは、10の代わりにVisual Studio 11を使うべきだと考えました。

0
naroom