最終更新:2017-12-08 (金) 11:24:44 (2325d)  

明示的リンク
Top / 明示的リンク

https://msdn.microsoft.com/ja-jp/library/253b8k2c.aspx

明示的リンクを使う一般的な理由

  • アプリケーションは、読み込む必要のある DLL の名前を実行時に初めて認識します。 たとえば、アプリケーションは、DLL の名前とエクスポート関数を設定ファイルから取得しなければならない場合があります。
  • DLL がプロセスの起動時に見つからない場合、暗黙的なリンクを使うプロセスは、オペレーティング システムによって停止されます。 同じ状況でも、明示的リンクを使うプロセスは停止されずに、エラーからの回復を試行します。 たとえば、プロセスがユーザーにエラーを通知して、ユーザーに DLL への別のパスを指定させることができます。 プロセスにリンクする DLL の DllMain 関数が失敗する場合にも、暗黙的リンクを使うプロセスは停止されます。 同じ状況でも、明示的リンクを使うプロセスは停止されません。
  • Windows は、アプリケーションの読み込み時にすべての DLL を読み込むため、暗黙的に多くの DLL とリンクするアプリケーションは、起動に時間がかかることがあります。 起動時のパフォーマンスを向上するには、アプリケーションは読み込み直後に必要な DLL を暗黙的にリンクし、その他の DLL については必要なときに明示的にリンクするように待機させることができます。
  • 明示的リンクの場合、アプリケーションとインポート ライブラリをリンクする必要はありません。 DLL 内の変更によってエクスポート序数が変更される場合、明示的リンクを使うアプリケーションをリンクし直す必要はありません (序数値ではなく関数の名前を使って GetProcAddress を呼び出すと仮定した場合)。他方、暗黙的リンクを使うアプリケーションは、新しいインポー ト ライブラリとリンクし直す必要があります。

関連