【でぃーえるえる】

DLL とは?

💡 複数のプログラムで「共有できるコードの部品」、Windowsのライブラリファイル
📌 このページのポイント
DLL(ダイナミックリンクライブラリ)の共有 アプリA アプリB アプリC 共通DLL (.dll ファイル) 関数・データを提供 1つだけでOK メモリ節約 DLLだけ更新可能 コード再利用 メリット 複数のアプリが1つのDLLファイルを共有して利用する
複数アプリがDLLを共有するイメージ
ひよこ ひよこ

DLLって何のためにあるの?

ペンギン先生 ペンギン先生

複数のアプリが同じ機能を使うとき、全部のアプリにコードを入れると無駄が多い。DLLという「共有の部品箱」に入れておけば、複数のアプリが1つのDLLを共有して使える。メモリの節約とコードの共有が目的。

ひよこ ひよこ

「DLLが見つかりません」エラーって?

ペンギン先生 ペンギン先生

アプリが必要なDLLが見つからないときのエラー。DLLが削除されたり、古いバージョンのDLLが必要なアプリを新しいPCで動かしたりするときに起きる。Microsoft Visual C++ ランタイムのDLLが必要なアプリでよく起きる。

ひよこ ひよこ

Linuxでも同じものがある?

ペンギン先生 ペンギン先生

Linuxには「Shared Object(.so)」という相当するもの(例:libssl.so)がある。役割はDLLと同じで共有ライブラリ。「error while loading shared libraries: libssl.so」のようなエラーが出たとき、必要なライブラリインストールすれば解決することが多い。

ひよこ ひよこ

「DLL地獄」ってたまに聞くけど何のこと?

ペンギン先生 ペンギン先生

複数のアプリが同じDLLの異なるバージョンを必要とするとき、一方を更新するともう一方が動かなくなる問題のことだよ。Windows 95/98時代に深刻だったんだ。現在は.NETのSide-by-Side実行やWinSxSディレクトリで複数バージョンを共存させる仕組みがあるし、コンテナ技術依存関係を隔離することもできる。実はNPMの「node_modules地獄」も同じ種類の問題で、依存パッケージのバージョン衝突はソフトウェア開発の永遠の課題なんだよ。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
DLLって出てきたら「複数プログラムで共有できるWindowsのライブラリファイル、欠落するとエラーになる」と思えばOK!
📖 おまけ:英語の意味
「Dynamic Link Library」 = 動的リンクライブラリ
💬 「動的(Dynamic)」リンクは実行時にライブラリを読み込む方式。静的リンク(コンパイル時にすべてを実行ファイルに組み込む)との対比
← 用語集にもどる