【でぃーえるえる】

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)」リンクは実行時にライブラリを読み込む方式。静的リンク(コンパイル時にすべてを実行ファイルに組み込む)との対比
← 用語集にもどる