ごらくらいふ

プログラミングしたりゲームしたり

DLLってなんなのん

DLLとは

ダイナミックリンクライブラリと読む。 動的なリンクで利用されるライブラリ。

対義語: 静的リンクライブラリの認識

リンクというものは、以下の認識でいる。

  • プログラムは、複数のコンパイルされたマシン語のプログラム片(以下、プログラム片)から成る。
  • ひとつのソースコードコンパイルするとひとつのプログラム片が生成される。
  • このプログラム片には、「処理」「処理の開始点」「処理の終了処理(return等)」が含まれている
  • リンカーが、それぞれのプログラム片の「処理」と「処理の開始点」をつなぎこむ

中でも静的リンクライブラリは、プログラムの中に直接つなぎこまれるモノを言う認識。 それ故にプログラムは単体で完結できるが、複数のプログラムで、まったく同じ処理が存在することがある。 これがリソースの無駄遣いに繋がる。

動的リンク

解決する要素

https://support.microsoft.com/ja-jp/help/815065/what-is-a-dll より

コードのモジュール化、コードの再利用、メモリ使用の効率化、ディスク領域の削減が促進されます。 これにより、オペレーティング システムおよびプログラムの読み込みや実行が速くなり、コンピュータ内で占めるディスク領域が小さくなります。

また、以下のメリットが挙げられている。

  • 使用するリソースが少ない
  • モジュラー アーキテクチャが促進される
  • 配置およびインストールが容易になる

動的リンクと静的リンクの違い

「処理」と「処理の開始点」のつなぎ込みで、以下の違いが現れる。

あるプログラム片の処理から、あるプログラム片の処理の開始点へ移動する際

  • メモリ上のどの地点へ移動すればよいか、プログラム内で予め判明しているものが静的リンク
  • メモリ上のどの地点へ移動すればよいか、システムに問い合わせて判明するものが動的リンク

所感

動的リンクの利点はわかったけれど、結局アプリケーションを配布する時にDLL同梱してない? リソースが少ない利点を享受しているの、.NET Framworkくらいなのでは…

参考リンク