ダイナミックリンクライブラリ

Infobox file format

name ダイナミックリンクライブラリ

icon
extension dll
mime applicationx-msdownload

magic Portable ExecutablePEと同じ(オプション内フラグで区別)

type code
uniform type commicrosoftwindows-dynamic-link-library
owner マイクロソフト
genre

container for 共有ライブラリ

contained by
extended from
extended to
standard

ダイナミックリンクライブラリ Dynamic Link Library DLL動的リンクライブラリは、ソフトウェアの一種。動的リンクを使ったライブラリのこと。

複数のプログラム コンピュータプログラムから共通に利用できるように種々の機能をプログラムとは分離させた、シェアードライブラリ(共有ライブラリ)でもあることが多い。

概要

たとえば、マウス コンピュータマウスカーソルが現在、画面上のどの座標にあるかを調べるなどという普遍性・一般性を持つ機能は、さまざまな実行プログラム コンピュータプログラム(アプリケーションソフトウェアアプリケーション)から参照される可能性があるが、その部分モジュール化して、さまざまなプログラムから使えるようにすることでコード再利用性を高め、多重開発(車輪の再発明)を防ぐことができる。このような場合に、この機能をダイナミックリンクライブラリとして実装し、アプリケーション実行プログラムの開始時に動的リンクしてから利用する方法がある。

プログラムコードを再利用する仕組みとしては、スタティックリンクライブラリを作成して静的リンクする方法が挙げられるが、ダイナミックリンクライブラリを適切設計・利用することで、ソフトウェアの機能追加・動作変更や不具合修正などの際に、ライブラリのモジュールのみを差し替えることで対応できるなどのメリット存在するrefhttpsmsdnmicrosoftcomja-jplibrarydtba4t8baspx DLL の利点 - MSDNref。Intel Integrated Performance PrimitivesIntel IPPなどのように、実行環境のプロセッサに合わせて自動的に最適なコードを選択・実行するためにダイナミックリンクライブラリを利用している例や、NewTek LightWaveなどのように、サードパーティ製のソフトウェア部品によってエンドユーザーが本体ソフトウェアに後から自由に機能追加できるようダイナミックリンクライブラリをプラグインとして利用する設計を行なっている例もある。

Microsoft WindowsWindowsにおけるダイナミックリンクライブラリのモジュールは、拡張子がdllのファイルである。ActiveXコントロール(Component Object ModelCOMコンポーネントの一種)に関しては、慣例的にocxという拡張子が付けられることもある(他にも、LightWave用プラグインファイルには慣例的にpの拡張子が付けられるが、Windows版におけるファイルの中身自体はWin32 DLLそのものである)。DLLは本体ソフトウェアつまり実行プログラム(exe拡張子を持つモジュール)によって実行時ロードされる。Win32 APIが格納されたDLLのように高い汎用性を持つC言語形式の関数がエクスポートされたDLLのほか、Microsoft Visual C環境専用のMicrosoft Foundation ClassMFC拡張DLL、Microsoft Visual Basicなどの他言語からの利用にも対応したCOMコンポーネント、およびNET Framework環境向けのマネージコードが格納されたアセンブリなど、ひとえにDLLといってもそのモジュールの実装形態や、モジュールを利用できるプログラムには差異がある。

Unix系OSでは usrlib や lib などの下に通常置かれる、拡張子がsorefsoはShared Objectの略。refのファイルである。バージョンによる差異の吸収目的として、拡張子がsoバージョン番号というファイルを実体として作成し、バージョン共通名のsoをその実体へのソフトリンクシンボリックリンクとすることが多い。

--

個人がフリーソフトなどを作成する際に、作りやすくするために作成して無料提供されるものもある。

-- -- DLL固有の特性や特徴を説明するに至っていない、余計な記述と思われるため、コメントアウト。 --

ライブラリが共有(パブリック)であることと、ダイナミックリンクであることは必ずしも一致しないので注意必要である。ダイナミックリンクだが共有しない(特定の実行プログラムからのみ使用されるプライベートなモジュール)というライブラリもありうる。

一般には、ダイナミックリンクライブラリでも、シンボル(関数シンボル)は実行プログラムファイルの生成時(コンパイル後のリンクビルド処理時)に解決する(アーリーバインド)。これに対し、エンドユーザーが後からモジュールを追加できるプラグインなどでは、実行時にシンボルを解決するものもある(ディレイロード)。要出典範囲多くの処理系では実装上両者は同じものだがdate2015年2月、例えばDarwin オペレーティングシステムDarwinでは明確に区別されている。

脚注
references
関連項目
DLL地獄

分離アプリケーションとSide-by-Sideアセンブリ

グローバル アセンブリ キャッシュ
Component Object Model
動的リンク
静的リンク
Windows Components
DEFAULTSORTたいなつみつくりんくらいふらり
Categoryソフトウェア
Categoryライブラリ プログラミング