535

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 をアンインストールして再起動しましたが、問題は解決しません。ヘルプ!

4

26 に答える 26

653

この 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に影響します。

于 2012-06-05T01:19:55.203 に答える
252

インクリメンタル リンクを無効にしてもうまくいかず、「埋め込みマニフェスト」をオフにしてもうまくいかない場合は、複数のバージョンの CVTRES.exe のパスを検索してください。

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

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

(エラー メッセージが実際の問題とは何の関係もないことは本当に腹立たしいことですが、Microsoft 製品では珍しいことではありません。)

古いバージョンのユーティリティを削除/名前変更するか、PATH 変数を再配置して、機能するバージョンが最初になるようにします。

C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64x64 ツール ビルドの場合は、別の .xml がある場所も確認する必要がある場合があることに注意してくださいcvtres.exe

于 2013-01-03T18:14:49.463 に答える
50

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

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

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

正しいバージョン::
date02/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"
于 2013-10-09T11:04:48.383 に答える
46

MSDN フォーラムのこのスレッドによると: VS2012 RC インストールは VS2010 C++ プロジェクトを壊します。単に、VS2010 SP1cvtres.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インストール ( SP1 のないもの)cvtres.exeにコピーします。

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

cvtres.exeこうすることで、 11.0.51106.1の修正版を効果的に使用できます。

のツールの 64 ビット バージョンに対して同じ手順を繰り返しますC:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64\cvtres.exe

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

于 2013-03-07T11:46:41.333 に答える
36

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

.NET 4.5 RC をアンインストールし、必要なバージョン (VS 2010 の場合は 4.0) をインストールします。これにより、発生している問題が解消されるはずです。

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

于 2012-09-04T22:51:50.960 に答える
15

これは、.NET Framework 4.5 が .NET Framework 4.0 を置き換えているためです。Visual Studio 2010 を数回アンインストールしましたが、うまくいきませんでした。.NET Framework 4.5 を削除して Visual Studio 2010 を再インストールすると、問題なく動作しました。

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

于 2012-06-18T17:14:57.320 に答える
14

私にとっては、「マニフェストの生成」を「いいえ」に設定すると修正されました。(/INCREMENTAL:NOでも固定)

于 2012-09-06T16:47:43.050 に答える
13

最終的に、VS2012 RC を完全にアンインストールし、続いて VS2010 を完全にアンインストールしてから、VS2010 を最初から再インストールすることで、この問題を解決しました。

永遠にかかりましたが、VS2010 で C++ プロジェクトを再びコンパイルできるようになりました。

于 2012-06-04T23:09:42.893 に答える
11

この問題は、 .NET 4.5 を削除して.NET 4.0に置き換えることで魔法のように解決されました。その後、Visual Studio 2010 を修復する必要がありました。何らかの方法で破損していました。

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

于 2012-10-17T20:19:59.063 に答える
10

Visual Studio 2012をインストールしていませんが、Visual Studio2010でこのエラーが発生します。VisualStudio2010SP1をインストールした後、これは解決されました。

于 2012-12-05T14:38:47.603 に答える
10

Microsoft Visual Studio 2010 Ultimateで同じ問題が発生し、この youtube ビデオで説明されている方法で解決されました

このビデオでは、C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\binにあるファイルcvtres.exeの名前をcvtres-old.exeに変更することを提案しています。 (in my Win7X64 matchine)

于 2016-05-14T11:21:18.720 に答える
6

ユーザーに +1私のために働いた答えの略です!

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

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

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

于 2012-10-08T22:53:13.857 に答える
4

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 をアンインストールしてから再インストールしました。これでうまくいきました。

于 2014-02-01T19:54:41.190 に答える
1

CMakeを再インストールするとうまくいきました。CMake の新しいコピーでは、Visual Studio 10 ではなく 11 を使用する必要があることがわかりました。

于 2013-03-26T20:38:31.550 に答える
1

私は数回試して、最終的にVS2010を数回アンインストールすることで問題を解決しました. すべてのファイルをアンインストールしていなかったと思うので、初めて機能しませんでした。

VS2012 のインストールでは、VS2010 SP1 を使用すると、両方のプログラムで同じプロジェクトに取り組むことはできないと言われています。プログラムは 1 つだけにすることをお勧めします。

ありがとう!

于 2012-06-13T09:45:34.493 に答える
1

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

  1. コマンド プロンプトで msconfig と入力し、Enter キーを押します。
  2. サービスタブをクリックします。
  3. 「アプリケーション エクスペリエンス」を探し、チェック マークを付けます (つまり、これを選択して有効にします)。
  4. [OK] をクリックします。また、必要に応じて再起動します。

したがって、問題は永遠に続きます。C++ プロジェクトをランダムにビルドし、邪魔されずにデバッグしてください。

于 2013-06-12T10:57:46.450 に答える
1

インクリメンタル リンクを有効にするを「いいえ (/INCREMENTAL:NO)」に設定しましたが、うまくいきません。

次に私は変更しました:

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

そしてそれは私のために働きます:)

于 2012-10-11T06:06:30.820 に答える