Tips of VC++ > DLL > DLL概要
前へ戻る次へ進む


DLL概要

別にMSDNにDLLの概要は書いてありますが、自分で適当にまとめてみました。 自己理解が目的だったりもします。 MSDNの引用を載せて、解釈していく方法をとります。

ダイナミック リンク ライブラリ (DLL) は、関数の共有ライブラリとして機能する実行ファイルです。ダイナミック リンクを利用することによって、プロセスの実行コードに含まれない関数を呼び出すことができます。関数の実行コードは、実際にその関数を使用するプロセスとは別に、複数の関数をコンパイル、リンクして格納した DLL に収められています。DLL は、データやリソースの共有にも有効です。メモリ内の DLL の内容には、複数のアプリケーションが同時にアクセスできます。
ダイナミック リンクは、実行モジュール (.DLL または .EXE ファイル) が使用する DLL 関数のコードの実行時での検索に必要な情報だけを含めることが可能な点でスタティック リンクと異なります。スタティック リンクの場合、リンカは参照される関数全部をスタティック リンク ライブラリから取得し、実行コード内に配置します。スタティック リンク ライブラリの代わりに DLL を使うと、実行ファイルのサイズは小さくなり、複数のアプリケーションが同じライブラリを使う場合は、ディスク容量とメモリを大幅に節約できます。

最初からこれだよ、MSDN強ぇ〜。改行が一つだけ!(笑
別に書いてあることは難しいことじゃないですね。 最後の一文が言いたいだけのようです。節約。 でも、そんなに大きなプログラム書けないプログラマ(すなわち私) にとってはDLLは必要ないのか!?
次の資料いっときます。「DLLの利点」です。

DLL を使った場合に逆に欠点となり得るのは、アプリケーションが単体では使えない点です。アプリケーションは、別個の DLL モジュールなしには動作しません。

おい、頭に来るぞ。マイ●ロソ●トよ、改行入れなさい。(笑
それはさておき。大事なのは頭3つです。 ディスク、メモリの節約は強調したいみたいです。 でも、そんな巨大なソース書けな…(以下略
あと、バージョンアップの簡略化でしょうか。 全てについて言えることは、よほど大きなプログラムを書かない限り DLLは作らなくてもよい!ということになってしまいますが。 つーわけで、次に私なりのメリット書きますね。

一つ目の良い例が圧縮形のDLLですね。 たくさんのプログラムから参照されると DLLのメリットが出てくるのではないでしょうか。 例えば、あれがスタティックライブラリだったら。リンクが面倒くさそう。 話し逸れますが、lhasaってすげぇ。
二つ目の理由でDLLを作ろうとすることが多いです。 ソースファイルが大きくなるのは当然として、 ソースファイル数が増えるのもあまり好ましくないのです。 DLLにすれば、一度コンパイルするので 段階を追ってプログラミングできると思います。 延べソース量は変わらないんですけども。 ただ、グローバル変数あたりで分かりにくくなりますね。 この辺は力量次第でしょう。
見た目と言うのは…分からないかなぁ。 ちっちゃなプログラムしか書けなくても DLLが同梱されてたら「おっ」って思いません?w

DLLだけでなく、スタティックライブラリにも言えますが、 他のプログラマに自分のソースを使ってもらえることは光栄なことです。 だからライブラリ作って公開するんですよ。

概要はここまで。

May 21, 2002