次の方法で共有


リンカーによる DLL の遅延読み込み

Visual C++ のリンカーは DLL の遅延読み込みをサポートするようになりました。このため、Windows SDK の関数 LoadLibraryGetProcAddress を使用して DLL の遅延読み込みを実装する必要がなくなりました。

Visual C++ 6.0 以前のバージョンでは、実行時に DLL を読み込む方法は、LoadLibraryGetProcAddress を使用する方法だけでした。DLL は、その DLL を使用する実行可能ファイルまたは DLL が読み込まれたたときに、オペレーティング システムによって読み込まれました。

Visual C++ 6.0 からは、DLL との静的なリンクの場合に、DLL の関数の呼び出し時に初めて DLL が遅延読み込みされるようにするオプションをリンカーで選択できるようになりました。

アプリケーションでは、/DELAYLOAD (遅延読み込みインポート) リンカー オプションとヘルパー関数 (Visual C++ では既定の実装) を使用して、DLL の読み込みを遅延できます。ヘルパー関数は、LoadLibraryGetProcAddress を呼び出して、実行時に DLL を読み込みます。

以下の場合は、DLL の遅延読み込みをお勧めします。

  • プログラムで DLL の関数を呼び出さない可能性がある。

  • プログラムの実行の後半まで DLL の関数を呼び出さない可能性がある。

DLL の遅延読み込みは、.EXE プロジェクトまたは .DLL プロジェクトのビルド時に指定できます。DLL の遅延読み込みを行う .DLL プロジェクトの場合、それ自体では Dllmain で遅延読み込みエントリ ポイントを呼び出しません。

DLL の遅延読み込みの詳細については、次のトピックを参照してください。

参照

概念

Visual C++ の DLL

リンク