読み方:だいなみっくりんくらいぶらりーディー‐エル‐エル(DLL) のこと。Weblio国語辞典では「Dynamic Link Library」の意味や使い方、用例、類似表現などを解説しています。">

「Dynamic Link Library」の意味や使い方 わかりやすく解説 Weblio辞書 (original) (raw)

この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。出典を追加して記事の信頼性向上にご協力ください。(このテンプレートの使い方)出典検索?: "ダイナミックリンクライブラリ"ニュース · 書籍 · スカラー · CiNii · J-STAGE · NDL · dlib.jp · ジャパンサーチ · TWL(2023年12月)

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

拡張子 .dll
MIMEタイプ PEの場合: application/vnd.microsoft.portable-executable[1]
UTI com.microsoft.windows-dynamic-link-library
マジック ナンバー PEと同じ(オプション内フラグで区別)
開発者 マイクロソフト
包含物 共有ライブラリ

ダイナミックリンクライブラリ (Dynamic Link Library: DLL、動的リンクライブラリ) は、ソフトウェアバイナリ形態の一種。動的リンクを使ったライブラリのこと。あるいは、Windowsで使用されるファイル形式を特に意図して、この語が用いられる場合もある。

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

概要

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

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

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

FM TOWNSTownsOSでは、V2.1L20以後でサポートされた。TownsOSにおけるダイナミックリンクライブラリのモジュールは、Windowsと同様に拡張子が「.dll」のファイルである[3]

Unix系OSでは /usr/lib や /lib などの下に通常置かれる、拡張子が「.so」[4]のファイルである。バージョンによる差異の吸収を目的として、拡張子が「.so.バージョン番号」というファイルを実体として作成し、バージョン共通名の「.so」をその実体へのシンボリックリンクとすることが多い。macOSでは拡張子として「.dylib」が使われる。同じUnix系OSでも、SunOS はリンク時に Shared library を指定しなくて良い(つまり、実行時まで(Shared library 内にあるとされる)関数の名前解決がされるかどうか遅延させることが可能である)が、Solaris ではリンク時に Shared library を指定することで(Shared library 内にあるとされる)関数が名前解決されるかどうかリンカがチェックできるようにする必要がある(無論、Shared library なので、リンカは関数が名前解決されるかどうかチェックするのみでリンクはしない)。

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

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

脚注

[脚注の使い方]

  1. ^ Andersson, Henrik (2015年4月23日). “application/vnd.microsoft.portable-executable” (英語). IANA. 2017年3月26日閲覧。
  2. ^ DLL の利点 - MSDN
  3. ^ 「INSIDE TOWNS TownsOS V2.1L20の機能 DLL活用術(前偏)」『Oh!FM TOWNS』1993年7月号、162-163頁。
  4. ^ 「so」は「Shared Object」の略。

関連項目

Windows コンポーネント
管理ツール アプリインストーラ コマンドプロンプト コントロールパネル アプレット デバイスマネージャ ディスク クリーンアップ デフラグ Driver Verifier DxDiag イベントビューア IExpress 管理コンソール Netsh パフォーマンスモニタ リソースモニタ 設定 Sysprep システム構成 システム ファイル チェッカー システム情報 システムポリシーエディター システムの復元 タスクマネージャ Windows エラー報告 Windows Ink Windowsインストーラ PowerShell Windows Update Windows Insider WinRE WMI スキャンディスク CHKDSK 問題の報告と解決
アプリ 3Dビューアー アラーム & クロック 電卓 カメラ 外字エディタ Clipchamp Cortana Edge FAX とスキャン フィードバック Hub サポートに問い合わせる 拡大鏡 メール/カレンダー 地図 メッセージング 映画&テレビ モビリティセンター ナレーター メモ帳 OneDrive OneNote ペイント ペイント3D Pay アドレス帳 People フォト フォト ビューアー クイック アシスト スマホ同期 Snipping Tool 切り取り & スケッチ 音声認識 Skype Sticky Notes Microsoft Store メディア プレーヤー Windows Media Player ボイスレコーダ ワードパッド WinSAT 文字コード表 リモート アシスタンス
シェル Aero ClearType エクスプローラ Windows サーチ スタートメニュー タスクバー 特殊フォルダ 関連付け シェル名前空間(英語版
サービス サービス コントロール マネージャー CLFS BITS Wireless Zero Configuration シャドウ コピー 自動再生 タスク スケジューラ マルチメディア クラス スケジューラ
ファイルシステム CDFS DFS exFAT FAT12 FAT16 FAT32 IFS NTFS ジャンクション マウント ポイント リパース ポイント シンボリック リンク TxF EFS ReFS UDF
サーバ Active Directory DFS レプリケーション DNS IIS MSDTC NAP AD RMS SharePoint Windows Media Services WSUS 移動ユーザー プロファイル グループ ポリシー ドメイン リモート デスクトップ サービス (Remote Desktop Protocol)
アーキテクチャ NT系のアーキテクチャ スタートアップ プロセス (Vista) CSRSS DLL EXE HAL I/O Ntoskrnl.exe Svchost.exe WinPE NTLDR/ブート マネージャー アイドル プロセス カーネル パッチ保護 レジストリ IRP KTM LSASS SMSS Windows リソース保護 オブジェクト マネージャー Win32コンソール Winlogon セキュリティアカウントマネージャー(SAM)(英語版) 論理ディスク マネージャー
セキュリティ Defender ファイアウォール Security Essentials 悪意のあるソフトウェアの削除ツール Safety Scanner DEP MIC UAC UIPI KPP セキュリティとメンテナンス BitLocker
互換性 互換モード COMMAND.COM 仮想DOSマシン WOW WOW64 Windows Subsystem for Linux
API .NET Framework COM OLE OLE オートメーション(英語版DCOM ActiveX 構造化ストレージ MTS DirectX DWM GDI Protected Media Path(英語版PlayReady Windows Imaging Component Windows Imaging Format Windows Script Host VBScript JScript
開発終了 ゲーム リバーシ ピンボール インクボール Chess Titans Mahjong Titans Purble Place スパイダ ソリティア ソリティア ハーツ フリーセル マインスイーパ アプリ Windowsアドレス帳 Anytime Upgrade Windows Calendar(Vista) CardSpace DVD メーカー Grooveミュージック Internet Explorer Windows Journal 画像とFAXビューア(XP) Windows Mail(Vista) Media Center Messenger Microsoft ActiveSync Windows Mobile デバイス センター NetMeeting Outlook Express WinHelp Write サウンド レコーダー デスクトップ ガジェット ハイパーターミナル バックアップと復元センター フォト ギャラリー プログラムマネージャ ミーティング スペース ムービー メーカー リソースメーター その他 UNIX サブシステム Interix Video for Windows
カテゴリ