第54章 ライブラリを作ろう


今回は、ライブラリ作りに挑戦します。

ところで、ライブラリって何?

はい。プログラムを作るときの手順を考えてみましょう。 まず、ソースファイルを書きますね。 これをたとえば、「test.c」とします。 次にこれをコンパイルします。「test.obj」ができます。 コンパイルしただけでは実行ファイルは作れません。 これに、処理系が用意したライブラリを結合します。 そして初めて実行可能ファイル「test.exe」が完成します。 統合環境からプログラムを作る場合これらの過程を意識する ことはありません。ビルドの設定をしてビルドボタンを押すだけですね。 自作のプログラムで

この関数は、汎用性があり実に役に立つ!!

というものがありませんか? あったら迷わずライブラリにしましょう。 そうすると、次回よりその関数をprintf関数のように 使うことができます。

そんな関数作れたらこんなHP見てないよ!

はい。すいません。そんな立派な関数でなくてもかまいません。 練習のためライブラリを作ってみましょう。将来必要になるかも しれません。それに自作のライブラリを使っていると

「何となく、プログラムがうまくなったな」

という自己満足に浸れます。またプログラムをあまり知らない人に 自慢できます。

では、具体的にどうすればよいのでしょうか? 普通、ライブラリを作るときはコマンドラインから行うのが 普通です。でも、最近はWindowsの普及でコマンドラインから 作業をするということを知らない人も増えてきました。 VC++1.51の場合、統合環境からライブラリを作ることができます。 その方法を説明しましょう。実に簡単です。 新しいプログラムを作る要領でプロジェクトを作ります。 その前に、いろいろなファイルを置くためのディレクトリを 用意しましょう。

メニューから「Project」「 New」を選択すると左のような ダイアログボックスが出てきます。この時「Project Name」 にフルパスで直接書き込んでもよいのですが、面倒くさい場合は 「Browse...」ボタンを押します。そして目的の フォルダまで行ったら「ファイル名(N)」の所にmylib.mak のように名前を付けます。そうすると・・・

左の図のようになります。また、この時「Project Type」 は「Static library(.LIB)」 にしておいて下さい。これで「OK」ボタンを押します。 すると、このプロジェクトに参加させる?ファイルを 聞いてきます。まだファイルは何もできていないので 「Close」ボタンを押します。次にメニューバーから 「File」「New」を選択します。そして、エジット画面が出てきたら ライブラリの元になるソースを書いていきます。 プログラムを作るわけではないのでmain関数は不要です。 (当たり前ですね)ここでは、文字列をもらって 「***」とかいたね と表示するprint関数を 記述してみましょう。

#include <stdio.h> int print(char *str) { printf("「%s」と書いたね\n", str); return 0; }

これをmylib.cという名前で保存しましょう。 stdio.hはprintf関数を使っているので必要です。

次に、このmylib.cをプロジェクトに参加させる必要があります。 メニューバーから「Project」「Edit...」を選択して下さい。 そして、「mylib.c」を選んで「Add」ボタンを押して下さい。

次に大事なのがこのライブラリのメモリモデル を何にするか?です。とりあえずはsmallにしておきましょう。 メモリモデルについては、後の章で解説します。

メニューバーから「Options」「Project...」を選択して下さい。 「Build Mode」は「Release」にしておいて下さい。

「Compiler...」ボタンを押してコンパイラのオプションを決めます。 「C/C++ Compiler Options」ダイアログボックスが出てきたら、 「Category」の所を「Memory Model」にしてください。そして 「Model:」のとろこを「Small *」にしてください。 これで準備OKです。あとは、リビルドボタンを押して 1,2秒待つとライブラリの一丁上がりです。 「mylib.lib」という自作のライブラリができあがっているはずです。

では、今作ったmylib.libが本当にライブラリとして働くのか 試してみましょう。簡単なプログラムを書いてみましょう。 今作ったライブラリはsmallメモリモデル用なのでこれから作る プログラムもsmallメモリモデルでなくてはいけません。

/*  test.c */ extern int print(char *); int main(void) { print("これはライブラリのテストです"); return 0; }

簡単のために自作print関数のプロトタイプを ソースに直接書きましたが、これをヘッダーファイルに書くのが 一般的です。自作のライブラリしか使っていないので stdio.hすらもインクルードしていないことに注意して下さい。 これを、コンパイルして実行してみましょう。 今までのDOSのプログラムを作るのと同じ要領です。 メモリーモデルをsmallにすることと、プロジェクトに 「test.c」(ソース・ファイル)の他に「mylib.lib」を 加えることを忘れないで下さい。

ライブラリは正しく動作しているようですね。 (こんな変な関数は何の役にもたたんなあ・・・) 次回は、もう少しましなライブラリを作ります。マイクロソフト以外のコンパイラを お使いの人はマニュアル等でライブラリの作り方を 研究してみて下さい。きっと似たような方法で作れるはずです。


[Index][総合Index] [Previous Chapter] [Next Chapter]

Update Mar/03/1997 By Y.Kumei
当ホーム・ページの一部または全部を無断で複写、複製、 転載あるいはコンピュータ等のファイルに保存することを禁じます。