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をアンインストールしました 、再起動しましたが、問題は解決しません。助けて!
この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 に影響します。
インクリメンタルリンクを無効にしてもうまくいかず、 "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
がある場合にもチェックする必要があるかもしれません。
cvtrs.exe
のバージョンを確認してください。
dir "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\cvtres.exe"
間違ったバージョン:date
:03/18/2010time
:01:16 PMsize
:31,048バイト name
:cvtres.exe
正しいバージョンdate
:02/21/2011time
:06:03 PMsize
: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"
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以前のビルドをサポートする必要がある場合)。
Visual Studio 2012 RCをインストールした場合は、.NET 4.5 RCもインストールされています。
.NET 4.5 RCをアンインストールし、必要なバージョンをインストールします(4.0 for VS 2010)。これはあなたが抱えている問題を解決するはずです。
これで同じ問題が解決しました。 Visual Studioをアンインストールする必要はありません。
これは .NET Framework 4.5が.NET Framework 4.0に取って代わっているためです。 .NET Framework 4.5を削除してVisual Studio 2010を再インストールしたところ、うまくいきました。
私にとっては、 'Generate Manifest'を 'No'に設定して修正しました。 (/ INCREMENTAL:NOで修正済み)
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
私はVS2012 RCのフルアンインストール、VS2010のフルアンインストール、VS2010の最初からの再インストールを順に行うことで、最終的にこの問題を解決しました。
それは永遠にかかりました、しかし私は今VS2010で再びC++プロジェクトをコンパイルすることができます。
この問題は、 .NET 4.5を削除し、 .NET 4.0 に置き換えることで解決しました。それから私はVisual Studio 2010を修復しなければなりませんでした - それはどういうわけか壊れています。
私は以前にVisual Studio 2012をインストールしてからアンインストールしました - これは問題に関連している可能性があります。
私はVisual Studio 2012をインストールしていませんが、それでもVisual Studio 2010でこのエラーが発生しました。VisualStudio 2010 SP1をインストールした後にこれを解決しました。
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に変更することをお勧めします
+1ユーザーへの短縮 答え /私のために働いた!
これをmsbuild /v:diag
でデバッグしようとしましたが、 MSBuild がリンカコマンドラインの<somename> .dll.embed.manifest.resを使用して、実行可能ファイルにマニフェストを埋め込もうとしています。これは<somename> .dll.embed.manifestから作成されたリソースファイルです。しかし、マニフェストファイルは空のUnicodeテキストファイルです。 (つまり、Unicodeの0xFEFFプレフィックスを持つ2バイトファイル)
そのため、根本的な問題は、そのマニフェストファイルが生成されていないか、<somename> .dll.intermediate.manifestが使用されるべきであったときに使用されていることに関係しているようです。
別の解決策は、プロパティ、マニフェストツール、入力と出力の下の「埋め込みマニフェスト」オプションをオフにすることです。
インクリメンタルリンクを有効にした後ではうまくいきませんでした。
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をアンインストールしてから再インストールしました。
要約する:
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を実行します。次のいずれかのファイルをコピーします。
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 に置き換えます。
Service Packをインストールしたにもかかわらずエラーが発生している場合は、C:¥Program Files(x86)¥Microsoft Visual Studio 10.0¥VC¥binフォルダにあるcvtres.exeを削除するか、名前を変更してみてください。これは私のために働きました。
私の問題は、同じライブラリを含むPC上に2つのパスがあることです。両方のパスが 追加のライブラリディレクトリ in 設定プロパティ - >リンカ - >一般 に追加されました。いずれかのパスを削除すると問題が解決しました。
私は数回試してみて、ついにVS2010を数回アンインストールすることで問題を解決しました。私はすべてのファイルをアンインストールしたわけではないと思うので、それが初めて機能しなかったのです。
VS2012のインストールでは、VS2010 SP1をお持ちの場合、両方のプログラムで同じプロジェクトに取り組むことはできません。プログラムは1つだけにすることをお勧めします。
ありがとうございます。
インクリメンタルリンクを有効にする / "いいえ(/ INCREMENTAL:NO)" そして、 はうまくいきません .
次に変更しました:
Project Properties
-> Configuration Properties
-> General
-> Platform Toolset -> "Visual Studio 2012 (v110)"
そしてそれは私のために働く:)
私は中核となるWin32プログラミングにWindows SDKを使用していて、「不明」な理由で.NET 4.5をインストールしていました。私はそれをアンインストールして、前の答えのように4.0をインストールしました、そして、ええ、それも私のために働きました。
SDKを使用してWin32アプリケーションを構築するには、役に立たない.NETフレームワークを使用しなければならなかったということは、ただの自慢です。
私は.NETの更新後に同じ問題を抱えていました:私は最初に.NETフレームワークをアンインストールし、から visualstudio.com からvisual studioをダウンロードして "repair"を選択しました。
NETフレームワークはビジュアルスタジオで自動的にインストールされました - >そして今それはうまく働きます!
以前Visual Studio 2010を使用していたマシンにVisual Studio 2017と.NET Framework 4.6をインストールした後、この問題が発生しました。
問題は、そのようなインストールの後、C:\ Windows\System32からの msvcr100_clr0400.dll というファイルが、19 Kbという非常に小さいサイズの新しいファイルで上書きされたことです。
別のビルドマシンから手動でファイルを復元した後、cvtres.exeは再び正常に機能し始めました。
私は次のようにしてこれを解決しました:
したがって、問題は永遠に続くでしょう。ランダムにビルドし、C++プロジェクトを何の邪魔もなしにデバッグします。
OpenGL SuperBibleの6番目のソースコードサンプルでこの問題の解決策を探している人のために、解決策は Debug ではなく Release に組み込まれています。すべてのプロジェクトで、 Release バージョンのインクリメンタルリンクオプションが無効になっています。
CMakeを再インストールすることは私のために働きました。 CMakeの新しいコピーは、10の代わりにVisual Studio 11を使うべきだと考えました。