【でぃーえるえる】

DLL とは?

最終更新:
💡 アプリが読み込んで使う、機能の部品

Windowsでアプリなどが読み込んで使う、関数やデータを含むライブラリ。プロセスごとの状態、読み込み時期、欠落エラーの確認を解説します。

📌 このページのポイント
DLL:部品を各プロセスで使うDLLファイル:関数・データ版・配置・互換性を確認読み込むプロセスAアプリがDLLを利用状態は通常A用プロセスBアプリがDLLを利用状態は通常B用コードの共有と、状態の共有は別同名でも別の版や配置を使う場合がある欠落時は提供元の案内で確認
矢印はDLLをプロセスへ読み込む関係で、プロセス間の通信ではありません。通常の変数などは各プロセスで別です。
ひよこ ひよこ
DLLは、何のためのファイル?
ペンギン先生 ペンギン先生
アプリや別のDLLが使う関数やデータを含む部品だ。Windowsでは.dllの名前で見かける。機能を分けて再利用したり、複数のアプリで同じコードを使ったりできる。
ひよこ ひよこ
全アプリが、同じ場所で処理する?
ペンギン先生 ペンギン先生
読み込んだDLLは、利用するプロセスの中で使う。共通のサービスへ通信する仕組みとは別だ。コードを共有できても、変数などの状態は通常プロセスごとに別になる。
ひよこ ひよこ
いつ読み込まれるの?
ペンギン先生 ペンギン先生
アプリの起動時に必要なDLLを読み込む方式と、動作中にLoadLibraryなどで読み込む方式がある。欠けたとき、起動できないのか、その機能だけ使えないのかも実装による。
ひよこ ひよこ
DLLが見つからないというエラーが出た!
ペンギン先生 ペンギン先生
まずファイル名やエラー全文、アプリの提供元の案内を確認する。アプリの修復や、必要なランタイムの導入が案内される場合がある。原因を確かめず、検索で見つけた同名ファイルを入れないようにしよう。
ひよこ ひよこ
Visual C++のランタイムなら、何でもよい?
ペンギン先生 ペンギン先生
対象アプリが必要な版やCPUアーキテクチャを確認する。Microsoftも、アプリの問題を直す場合は提供元の案内に従うよう説明している。単に最新の一つを入れれば、すべて解決するとは限らない。
ひよこ ひよこ
DLLを更新したら、全部のアプリが直る?
ペンギン先生 ペンギン先生
必要な版や読み込み先、互換性による。同名のDLLが別の場所にある場合もある。アプリごとの配置やside-by-sideなどで依存関係を管理する仕組みもあるが、無条件に共存できるわけではない。
もっと詳しく知りたい人へ

共有すると、アプリの変数も混ざる?

DLLのグローバル変数や静的変数は、通常、読み込んだプロセスごとに別です。プロセス間でデータを共有するには、共有メモリなど別の仕組みを用います。コードの再利用と、データの共有は区別します。

DLLという拡張子なら、安全な部品?

拡張子だけでは安全性は分かりません。アプリが探す場所に別のDLLを置かれると、意図しないコードを読み込むリスクがあります。必要なファイルは提供元の正規の配布や修復手順でそろえます。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「DLL」って出てきたら「Windowsのアプリなどが読み込んで再利用する機能のまとまり」と思えばだいたいOK!
📖 おまけ:英語の意味
「Dynamic-Link Library」 = 動的リンクライブラリ
💬 実行ファイルへ静的に組み込む方法と区別し、アプリの起動時や動作中にライブラリを読み込んで利用します。別のDLLが利用する関数などを提供する場合もあります。

参考資料

← 用語集にもどる