リンカーによる DLL の遅延読み込み
Visual C++ のリンカーは DLL の遅延読み込みをサポートするようになりました。 このため、Windows SDK の関数 LoadLibrary と GetProcAddress を使用して DLL の遅延読み込みを実装する必要がなくなりました。
Visual C++ 6.0 以前のバージョンでは、実行時に DLL を読み込む方法は、LoadLibrary と GetProcAddress を使用する方法だけでした。DLL は、その DLL を使用する実行可能ファイルまたは DLL が読み込まれたたときに、オペレーティング システムによって読み込まれました。
Visual C++ 6.0 からは、DLL との静的なリンクの場合に、DLL の関数の呼び出し時に初めて DLL が遅延読み込みされるようにするオプションをリンカーで選択できるようになりました。
アプリケーションでは、/DELAYLOAD (遅延読み込みインポート) リンカー オプションとヘルパー関数 (Visual C++ では既定の実装) を使用して、DLL の読み込みを遅延できます。 ヘルパー関数は、LoadLibrary と GetProcAddress を呼び出して、実行時に DLL を読み込みます。
以下の場合は、DLL の遅延読み込みをお勧めします。
プログラムで DLL の関数を呼び出さない可能性がある。
プログラムの実行の後半まで DLL の関数を呼び出さない可能性がある。
DLL の遅延読み込みは、.EXE プロジェクトまたは .DLL プロジェクトのビルド時に指定できます。 DLL の遅延読み込みを行う .DLL プロジェクトの場合、それ自体では Dllmain で遅延読み込みエントリ ポイントを呼び出しません。
DLL の遅延読み込みの詳細については、次のトピックを参照してください。