16

Visual Studio 2008 SP1を使用して、
この行:

LINK : debug\XXXXX.exe not found or not built by the last incremental link; performing full link

どんなに小さな変更を加えても、プロジェクトをコンパイルするたびに表示されます。
その理由は何でしょうか?

4

6 に答える 6

13

古い質問ですが、万が一の場合に備えて、それはまだ問題です(そしてそれは..)。

インクリメンタルリンクは、マニフェストファイルの生成と互換性がありません(プロジェクトオプション>リンカー>マニフェストファイル>マニフェストの生成:はい)。実際、マニフェストを生成するとexe / dllが変更されるため、リンカーは完全なリンケージを実行する必要があります。

詳細については、いくつかの回避策があります:http: //chadaustin.me/2009/05/incremental-linking-and-embedded-manifests/

一時的な(そして最も簡単/最速の)解決策は、開発中にマニフェストの生成を無効にし、リリース段階で再び有効にすることです。これにより、アプリのXP / VistaスタイルのGUIが無効になります(コントロールは「クラシックモード」のように見えます)。

于 2010-04-17T18:01:34.500 に答える
6

したがって/INCREMENTAL、リンカーのコマンドラインに追加すると、問題は自動的に修正されることがわかります。これは、ドキュメントによるデフォルトの動作がインクリメンタルリンクを有効にすることであるにもかかわらずです。

変。

于 2009-10-13T19:34:46.553 に答える
4

本当に暗闇で撮影しますが、...

XXXXX.exeをビルドされた場所から別の場所に移動しますか?インクリメンタルリンクの要点は、既存のexeを変更することです。ない場合は難しいでしょう...

別の考えられる理由は、ビルド後にファイルが変更されたことです(おそらく別のツールによって)...

すべての理由は、/INCREMENTALのヘルプ項目にリストされています。

さらに、次のいずれかの状況が発生した場合、LINKは完全なリンクを実行します。

インクリメンタルステータス(.ilk)ファイルがありません。(LINKは、後続の増分リンクに備えて、新しい.ilkファイルを作成します。)

.ilkファイルへの書き込み権限はありません。(LINKは.ilkファイルを無視し、増分なしでリンクします。)

.exeまたは.dll出力ファイルがありません。

.ilk、.exe、または.dllのタイムスタンプが変更されます。

LINKオプションが変更されました。ほとんどのLINKオプションは、ビルド間で変更されると、完全なリンクになります。

オブジェクト(.obj)ファイルが追加または省略されます。

/ Yu/Z7オプションでコンパイルされたオブジェクトが変更されます。

于 2009-10-13T09:42:24.083 に答える
3
  1. Microsoftからprocmonをダウンロードします。
  2. それを実行し、.exe名を含むパスへのアクセスを探すようにフィルターを設定します。
  3. リンクを作成します。
  4. それがどのような問題を抱えているかを見てください-それはそれを見つけますか、それを開くときにエラーをログに記録しますか?Procmonは、開いたり、読んだり、閉じたりするすべてのファイルをログに記録します。エラーが発生した場合は、ログに記録します。
  5. また、.ilkファイルが見つかることを確認してください。これも必要だと思います。
于 2009-10-13T15:21:12.067 に答える
1

(暗闇でも)考えられる理由の1つは、__DATE__マクロを参照するプロジェクト全体のヘッダーを使用していることです。ただし、その場合は、完全な再コンパイルも表示されます(そうですか?)

于 2009-10-13T09:58:41.580 に答える
1

私の場合、昨日このエラーが発生しました。

VSを。の代わりに設定code generation > runtime Libraryします。Multi-threaded Debug DLL (/MDd)Multi-threaded Debug (/MTd)

新しいプロジェクトを再作成すると、この悪い設定が再び発生します。手動でに切り替えても/Mtd、エラーは発生しません。

于 2013-10-04T18:38:56.547 に答える