OrangeMaker_logo
memo アイコン VS2008/VS2010 備忘録

 VisualStudio2008/2010関連でちょっとしたメモを記録します。
  (記載内容について正しい保障があるものではありませんのでご注意ください。)

DLLの遅延読み込み

DLLは通常プロセスの起動時にプロセスのメモリ空間にマッピングされます。しかしながらOSバージョンによって使用するAPIを選択したいような場合、具体的にはVISTA以降のAPIを使用するがXPでも実行する場合はOSバージョンを確認して処理の切り替えをおこないます。この場合、プロセス起動時に使用しないAPIを含むDLLをロードしてしまうと起動時にDLLが見つからないエラーとなりプロセス起動が失敗します。

このようなケースでDLLの遅延読み込みの指定を行うと、実際に実行する段階でDLLがマッピング(ロード)されますので該当するAPIを実行しなければロードされないのでエラーとはなりません。

 また、まれにしか実行しない処理をDLLにして遅延読み込みの指定を行っておくと実行時までロードされませんので、プロセスの起動が早くなり、プロセスのメモリも節約できます。

 このDLLの遅延読み込みの指定は、VS2008ではリンカのオプションで指定します。

DLL遅延読み込み指定