プログラムの実行に必要なライブラリをリンクする方式の1つで、ライブラリのコードを実行可能ファイルから分離しておき、プログラムの実行時にリンクする方法のことです。
動的リンクでリンクするように設計されたライブラリを、動的リンクライブラリ(DLL)と呼びます。複数のプログラムから共有されることを前提としている場合、共有ライブラリと呼ばれることもあります。
動的リンク以外の方式として、静的リンクがあります。静的リンクは、ライブラリのコードを実行可能ファイルの中に含めてしまう方法です。
動的リンクでは、実行可能ファイルの中にはライブラリのコードを呼び出す部分は入っていますが、肝心の呼び出し先のコードが入っていません。そのため、実行可能ファイルがあるだけでは実行できず、必要なライブラリのファイルが発見できる場所に置かれている必要があります。
動的リンクでは、実行可能ファイルの中にローダ(ダイナミックリンカ)というプログラムを組み入れておき、実行時のリンク処理に用います。ローダを組み入れる処理をリンカが担うこともありますし(インポートライブラリを用いる)、プログラマーがローダの処理をソースファイルに記述する方法もあります。いずれにしても、すでにリンク済みになっている静的リンクと比べると、実行時にリンクの処理が行われる分だけ処理速度の面では劣ることになります。
一方、静的リンクと違って、同じライブラリを使うプログラムが複数あるときに、それぞれに同じコードを含まなくて済み、実行可能ファイルのサイズも小さくなります。また、ライブラリ側に更新があって、その内容を反映したいときに、プログラムをビルドしなおす必要がありません(API に変更があった場合は除く)。しかし、ライブラリのファイルを差し替えただけで、プログラムの動作に変更が加わることになるため、それが予期せぬ不具合につながる可能性もあります(DLL地獄)。
Programming Place Plus のトップページへ
はてなブックマーク に保存 | Pocket に保存 | Facebook でシェア |
X で ポスト/フォロー | LINE で送る | noteで書く |
RSS | 管理者情報 | プライバシーポリシー |