C ++:link:debug xxxxx.exeは、最後のインクリメンタルリンクによって構築されていないか、構築されていません。完全なリンクを実行します
-
20-09-2019 - |
質問
Visual Studio 2008 SP1の使用、
この行:
LINK : debug\XXXXX.exe not found or not built by the last incremental link; performing full link
私がどんなに小さく変化しても、プロジェクトをコンパイルするたびに毎回表示されます。
その理由は何でしょうか?
解決 2
だから、私が追加すると問題が自分で修正することが判明しました /INCREMENTAL
リンカーコマンドラインへ。これは、ドキュメントに従ってデフォルトの動作がインクリメンタルリンクを有効にすることであるという事実にもかかわらず。
変。
他のヒント
古い質問ですが、誰かの場合はまだ問題です(そしてそれは..)。
インクリメンタルリンクは、マニフェストファイルの生成と互換性がありません(proj opts> linker> manifest file>生成マニフェスト:はい)。実際、Manifestの生成はexe/dllを変更するため、リンカーは完全なリンケージを行う必要があります。
詳細については、いくつかの回避策があります。http://chadaustin.me/2009/05/incremental-linking-and-embedded-manifests/
一時的な(そして最も簡単な/最速)ソリューションは、開発中にマニフェストの生成を無効にし、リリース段階で再び有効にすることです。これにより、アプリのXP/VistaスタイルのGUIが無効になります(コントロールは「クラシックモード」のように見えます)。
本当に暗闇の中で撮影しますが...
xxxxx.exeをどこかに構築されている場所から移動しますか?インクリメンタルリンクの全体的なポイントは、既存のEXEを変更することです。いなければ、それは難しいでしょう...
別の考えられる理由は、ビルド後にファイルが変更されたことです(おそらく別のツールによって)...
すべての理由がリストされています /増分のヘルプアイテム:
さらに、次の状況のいずれかが発生した場合、リンクは完全なリンクを実行します。
増分ステータス(.ilk)ファイルがありません。 (リンクは、後続の増分リンクに備えて新しい.ilkファイルを作成します。)
.ilkファイルに書き込み許可はありません。 (リンクは.ilkファイルを無視し、非注入的にリンクします。)
.exeまたは.dll出力ファイルがありません。
.ilk、.exe、または.dllのタイムスタンプが変更されます。
リンクオプションが変更されます。ほとんどのリンクオプションは、ビルド間で変更された場合、完全なリンクを引き起こします。
オブジェクト(.OBJ)ファイルが追加または省略されています。
/yu /z7オプションでコンパイルされたオブジェクトが変更されます。
- ダウンロード プロクモン Microsoftから。
- それを実行し、フィルターをセットアップして、.exe名を含むパスへのアクセスを探しているようにします。
- リンクを実行します。
- それがどのような問題を抱えているかを見てください - それはそれを見つけますか、それはそれを開くときにエラーを記録しますか? Procmonは、すべてのファイルを開き、読み取り、閉じるなど、すべてのファイルをログに記録します。エラーが発生した場合、ログを記録します。
- また、.ilkファイルを見つけることができることを確認してください。それも必要だと思います。
(暗闇でも)考えられる理由の1つは、プロジェクト全体のヘッダーを使用することです。 __DATE__
大きい。しかし、その場合、完全な再コンパイルも表示されます(あなたは?)
私の場合、昨日このエラーが発生しました。
VSセット code generation > runtime Library
に Multi-threaded Debug DLL (/MDd)
それ以外の Multi-threaded Debug (/MTd)
.
新しいプロジェクトを再作成すると、この悪い設定が再び起こります。手動で切り替えます /Mtd
, 、エラーは発生しません。