DLLとは
ダイナミックリンクライブラリと読む。 動的なリンクで利用されるライブラリ。
対義語: 静的リンクライブラリの認識
リンクというものは、以下の認識でいる。
- プログラムは、複数のコンパイルされたマシン語のプログラム片(以下、プログラム片)から成る。
- ひとつのソースコードをコンパイルするとひとつのプログラム片が生成される。
- このプログラム片には、「処理」「処理の開始点」「処理の終了処理(return等)」が含まれている
- リンカーが、それぞれのプログラム片の「処理」と「処理の開始点」をつなぎこむ
中でも静的リンクライブラリは、プログラムの中に直接つなぎこまれるモノを言う認識。 それ故にプログラムは単体で完結できるが、複数のプログラムで、まったく同じ処理が存在することがある。 これがリソースの無駄遣いに繋がる。
動的リンク
解決する要素
https://support.microsoft.com/ja-jp/help/815065/what-is-a-dll より
コードのモジュール化、コードの再利用、メモリ使用の効率化、ディスク領域の削減が促進されます。 これにより、オペレーティング システムおよびプログラムの読み込みや実行が速くなり、コンピュータ内で占めるディスク領域が小さくなります。
また、以下のメリットが挙げられている。
- 使用するリソースが少ない
- モジュラー アーキテクチャが促進される
- 配置およびインストールが容易になる
動的リンクと静的リンクの違い
「処理」と「処理の開始点」のつなぎ込みで、以下の違いが現れる。
あるプログラム片の処理から、あるプログラム片の処理の開始点へ移動する際
- メモリ上のどの地点へ移動すればよいか、プログラム内で予め判明しているものが静的リンク
- メモリ上のどの地点へ移動すればよいか、システムに問い合わせて判明するものが動的リンク
所感
動的リンクの利点はわかったけれど、結局アプリケーションを配布する時にDLL同梱してない? リソースが少ない利点を享受しているの、.NET Framworkくらいなのでは…