スタティックライブラリの作り方 for VC++

ライブラリとは、汎用性の高い複数のプログラムを、再利用可能な形でひとまとまりにしたもの



つまり、様々なプログラムで利用可能だなと思われるコードを
再利用しやすいように部品として生成したものがライブラリと言えます。


中でもスタティックライブラリ(静的リンクライブラリ=static link library)は
コンパイルするたびにリンクする方式のライブラリです。




今回は例としてfps管理サンプルをライブラリ化してみましょう。

プロジェクトの作成


1.いつも通りのプロジェクトの新規作成。
2.空のプロジェクト(名前はfpser)

20090306151031

3.ヘッダー、ソース類を作る。(mainは不要)

20090306151441

プロジェクトの設定



プロジェクト−fpserのプロパティから変えられる。

設定する項目(Debug)

・構成プロパティ−全般−構成の種類 | exe→lib
・構成プロパティ−C/C++−コード生成−ランタイムライブラリ | /MDd→/MTd
・構成プロパティ−ライブラリアン−全般−出力ファイル | 適当

設定する項目(Release)

・構成プロパティ−全般−構成の種類 | exe→lib
・構成プロパティ−C/C++−コード生成−ランタイムライブラリ | /MD→/MT
・構成プロパティ−ライブラリアン−全般−出力ファイル | 適当


出力ファイルは_rや_dを拡張子の前につけておいて
同じディレクトリに置くと便利になります。

使えるように工夫する



新しくFpserLib.hをプロジェクトに追加します。

#ifndef _FPSER_LIB_
#define _FPSER_LIB_

#include "fpser.h"

#ifdef _DEBUG
#pragma comment(lib,"fpser_d.lib")
#else
#pragma comment(lib,"fpser_r.lib")
#endif // _DEBUG

#endif // _FPSER_LIB_

#pragmaにはライブラリ名を入力してください。
_DEBUGはデバッグモードで実行している場合に定義されるものです。




またツール−オプションからVC++のオプションを開き
プロジェクトおよびソリューション−VC++ディレクトリから
ライブラリファイルの置いてあるディレクトリを追加します。
20090306161705
右上がライブラリになっていることを確認してください。


以下のようにライブラリ専用のディレクトリを作っておくと便利でしょう。
20090306162113

スタティックライブラリの使い方



先ほど作ったヘッダをロードするだけで使えるようになります。

#include "fpser/FpserLib.h"



エラーがでる場合はパスが間違っている場合がありVC++ディレクトリ情報を
確認してからもう一度トライしてください。(ヘッダとライブラリに注目ね)

ツール−オプションからVC++のオプション
プロジェクトおよびソリューション−VC++ディレクト


私の構成パターン

E:\Development\lib\mylib → ライブラリのプロジェクト置き場
E:\Development\lib\mylib\lib → ライブラリファイル置き場(lib)


FpserLib.hはE:\Development\lib\mylib\fpser\FpserLib.hにあります。
E:\Development\lib\mylibをヘッダファイル置き場として上記の方法で登録すれば
#include "fpser/FpserLib.h"で呼び出すことが可能です。
(作るときにソリューションにチェックを入れちゃうとやや大変(汗)


もちろんライブラリはE:\Development\lib\mylib\libとしてVC++に登録してあります。

最後に



このような小さなクラスライブラリだと威力は微小なものですが
ライブラリが大きくなっていくと、直接ファイルを追加するパターンと比べて
随分と楽になってくることが理解できるでしょう。


それでは、快適な再利用ライフをお楽しみください。