/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 開発環境でこのリンカー オプションを設定するには

  1. プロジェクトの [プロパティ ページ] ダイアログ ボックスを開きます。 詳しくは、「コンパイラとビルドのプロパティを設定する」をご覧ください。

  2. [構成プロパティ]>[リンカー]>[詳細] プロパティ ページを選択します。

  3. Unload delay loaded DLL プロパティまたは Unbind delay loaded DLL プロパティを変更します。 [OK] または [適用] を選択して、変更内容を保存します。

このリンカーをコードから設定するには

関連項目

MSVC リンカーのリファレンス
MSVC リンカー オプション