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

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

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2023/12/06 08:52 UTC 版)

概要

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

プログラムコードを再利用する仕組みとしては、スタティックリンクライブラリを作成して静的リンクする方法が挙げられるが、ダイナミックリンクライブラリを適切に設計・利用することで、ソフトウェアの機能追加・動作変更や不具合修正などの際に、ライブラリのモジュールのみを差し替えることで対応できるなどのメリットが存在する[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」の略。


「ダイナミックリンクライブラリ」の続きの解説一覧



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「ダイナミックリンクライブラリ」の関連用語

ダイナミックリンクライブラリのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



ダイナミックリンクライブラリのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアのダイナミックリンクライブラリ (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。

©2024 GRAS Group, Inc.RSS