次の方法で共有


/DELAY (遅延読み込みのインポート設定)

/DELAY:UNLOAD
/DELAY:NOBIND

解説

/DELAY オプションは、DLL の遅延読み込みを制御します。

  • UNLOAD 修飾子は、DLL の明示的なアンロードをサポートするように、遅延読み込みヘルパー関数に指示します。これは、インポート アドレス テーブル (IAT: Import Address Table) を元の形式にリセットし、IAT のポインターを無効にして上書き可能な状態にすることで実現されます。

    UNLOAD を選択しないと、FUnloadDelayLoadedDLL の呼び出しに失敗します。

  • NOBIND 修飾子は、最終イメージに連結可能な IAT を含めないようにリンカーに指示します。既定では、遅延読み込みの DLL に対して連結可能な IAT が作成されます。その結果生成されるイメージは、静的にバインドできません。連結可能な IAT を含むイメージの場合は、実行前に静的にバインドできます。/BIND」を参照してください。

    DLL をバインドすると、ヘルパー関数は、参照先の各インポートに対して GetProcAddress を呼び出さずに、バインドされた情報を使用します。タイムスタンプまたは設定アドレスが、読み込まれた DLL のものと一致しない場合は、ヘルパー関数はバインドされた IAT が最新でないと見なし、バインドされた IAT がないものとして処理を続けます。

    NOBIND を指定すると、プログラム イメージが大きくなりますが、DLL の読み込み時間は速くなります。DLL をバインドしない場合は、NOBIND を指定すると、バインドされた IAT は生成されません。

DLL の遅延読み込みを指定するには、/DELAYLOAD オプションを使用します。

Visual Studio 開発環境でこのリンカー オプションを設定するには

  1. プロジェクトの [プロパティ ページ] ダイアログ ボックスを開きます。詳細については、「Visual C++ プロジェクトのプロパティの設定」を参照してください。

  2. [リンカー] フォルダーをクリックします。

  3. [詳細] プロパティ ページをクリックします。

  4. [DLL の遅延読み込み] プロパティを変更します。

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

参照

関連項目

リンカー オプションの設定

リンカー オプション