/INCREMENTAL (インクリメンタル リンクを行う)
更新 : 2007 年 11 月
/INCREMENTAL[:NO]
解説
/INCREMENTAL オプションは、インクリメンタル リンクの処理方法を制御します。
既定では、インクリメンタル リンクは実行されます。既定で設定されたインクリメンタル リンクを無効にするには、/INCREMENTAL:NO と指定します。
インクリメンタル リンクされたプログラムは、フル リンクされたプログラムと機能的には等価です。しかし、これは以降のインクリメンタル リンク用に用意されているものであるため、インクリメンタル リンクされた実行可能 (.exe) ファイルとダイナミック リンク ライブラリ (DLL: Dynamic-Link Library) には次の特徴があります。
コードとデータが埋め込まれているため、フル リンクされたプログラムよりサイズが大きくなります。埋め込みを行うと、.exe ファイルを作成し直す必要はなくなりますが、機能やデータが大きくなります。
ジャンプ サンクを使って、新しいアドレスに関数を再配置する場合があります。
メモ : 最終リリース ビルドに埋め込みやサンクが含まれないようにするには、プログラムをフル リンクします。
既定の設定に関係なくインクリメンタル リンクを行うには、/INCREMENTAL と指定します。このオプションが指定されているにもかかわらず、インクリメンタル リンクを実行できない場合、リンカは警告メッセージを表示して、プログラムのフル リンクを行います。一部のオプションや状況によっては、/INCREMENTAL が無効になる場合もあります。
大半のプログラムでは、インクリメンタル リンクができます。ただし、変更箇所が大きすぎたり、インクリメンタル リンクと矛盾するオプションが指定されていると、実行できません。フル リンクを実行するには、次のいずれかを行います。
インクリメンタル リンクをオフ (/INCREMENTAL:NO) にする。
/OPT:REF オプションを指定する。
/OPT:ICF オプションを指定する。
/ORDER オプションを指定する。
/DEBUG を指定すると /INCREMENTAL も指定されます。
以下の場合もフル リンクが行われます。
インクリメンタル ステータス (.ilk) ファイルが見つからない場合。LINK では、以降のインクリメンタル リンク用に新しい .ilk ファイルを作成します。
.ilk ファイルに対する書き込み権限がない場合。LINK では .ilk ファイルを無視して、フル リンクを行います。
出力ファイル .exe または .dll が見つからない場合。
.ilk、.exe、または .dll のタイムスタンプを変更した場合。
LINK オプションを変更した場合。ビルド間で LINK オプションを変更すると、ほとんどの場合、フル リンクが行われます。
オブジェクト (.obj) ファイルを追加または省略した場合。
/Yu /Z7 でコンパイルしたオブジェクトを変更した場合。
Visual Studio 開発環境でこのリンカ オプションを設定するには
プロジェクトの [プロパティ ページ] ダイアログ ボックスを開きます。詳細については、「Visual C++ プロジェクトのプロパティの設定」を参照してください。
[リンカ] フォルダをクリックします。
[全般] プロパティ ページをクリックします。
[インクリメンタル リンクを有効にする] プロパティを変更します。
このリンカをコードから設定するには
- LinkIncremental を参照してください。