/DELAY
(遅延読み込みのインポート設定)
実行時の DLL の遅延読み込みを制御するためのリンカー オプションです。
構文
/DELAY:UNLOAD
/DELAY:NOBIND
解説
/DELAY
オプションを使うと、DLL の遅延読み込みを制御できます。
/DELAY:UNLOAD
修飾子は、DLL の明示的なアンロードをサポートするように遅延読み込みヘルパー関数に指定します。 インポート アドレス テーブル (IAT) は元の形式にリセットされ、IAT のポインターは無効になって上書きされます。/DELAY:UNLOAD
を選択しない場合、__FUnloadDelayLoadedDLL
の呼び出しはすべて失敗します。/DELAY:NOBIND
修飾子は、バインドできる IAT を最終イメージに含めないようにリンカーに指定します。 既定では、遅延読み込みされる DLL に対してバインドできる IAT が作成されます。 生成されるイメージは静的にバインドできません。 (バインド可能な IAT を持つイメージは、実行前に静的にバインドされる場合があります)。詳細については、「/BIND
」を参照してください。DLL がバインドされている場合、ヘルパー関数では、参照される各インポートで
GetProcAddress
を呼び出す代わりに、バインドされた情報の使用を試みます。 タイムスタンプまたは優先アドレスが読み込まれた DLL のものと一致しない場合、ヘルパー関数ではバインドされた IAT が古いと見なされます。 バインドされた IAT が存在しないかのように処理を続行します。/DELAY:NOBIND
を使用すると、プログラム イメージは大きくなりますが、DLL の読み込み時間は速くなります。 DLL をバインドしない場合は、/DELAY:NOBIND
を使用すると、バインドされた IAT は生成されません。
DLL の遅延読み込みを指定するには、/DELAYLOAD
オプションを使用します。
Visual Studio 開発環境でこのリンカー オプションを設定するには
プロジェクトの [プロパティ ページ] ダイアログ ボックスを開きます。 詳しくは、「コンパイラとビルドのプロパティを設定する」をご覧ください。
[構成プロパティ]>[リンカー]>[詳細] プロパティ ページを選択します。
読み込まれた遅延 DLL プロパティまたは Unbind 遅延読み込み DLL プロパティを変更します。 [OK] または [適用] を選択して、変更内容を保存します。
このリンカーをコードから設定するには
- 以下を参照してください。AdditionalOptions