ライブラリの作り方
2013年6月30日:MFC
自分がよく使う関数やクラスはライブラリとしてまとめておくと便利です。
もしライブラリとしてまとめないと、毎回同じ関数を書く必要があります。
関数が数個ならいいのですが、100個とかになるととても面倒です。
(もちろんコピペすればいいのですが…)
そこで、ライブラリを作成しましょう。
ライブラリを作成すれば、ヘッダーファイルとライブラリファイルを登録するだけでOKです。
ライブラリの種類
ライブラリには
- スタティックライブラリ
- DLL
があります。スタティックライブラリの場合はプログラムに直接ライブラリの内容を書き込みます。ですから出来上がったexeプログラムを直接配布できます。しかし、exeプログラムはその分容量が必要になります。
一方、DLLの場合はexeプログラムにdllファイルを添えて配布する必要があります。dllファイルを添える分、exeプログラムは容量を必要としません。ただし、exeプログラムとdllファイルを足した容量はスタティックライブラリの場合と変わりません。
以上のことから、
複数のプログラムで同じライブラリを使うならDLLを使う
とすればいいでしょう。これにより、ライブラリの内容を更新したい場合はDLLを交換するだけでよくなります。
一方、プログラムが少ない場合はスタティックライブラリで十分です。
Word、Excel、パワポなど複数の巨大プログラムを個人で配布する場合は少ないと思うので、個人にとってはスタティックライブラリがいいでしょう。
そこで、ここではスタティックライブラリの作り方を紹介します。
スタティックライブラリを作る
Visual Studioでスタティックライブラリは簡単につくれます。
プロジェクトの作成
新しくプロジェクトをつくり「Win32コンソールアプリケーション」を選択します。
プロジェクト名は「MyFuncsLib」にします。
そして、アプリケーションの設定画面では「スタティックライブラリ」を選択します。
また、「プリコンパイル済みヘッダー」のチェックを外しておきます。
これでプロジェクトの作成はOKです。
ヘッダーファイルの作成
左のほうにあるソリューションエクスプローラーのヘッダーファイルを右クリックして「MyFuncs.h」を追加します。
そして、以下のようにコードをかきます。
namespace MyFuncs { double Add(double a,double b); }
ソースファイルの作成
次にソースファイルを作成します。ソースファイルを右クリックして「MyFuncs.cpp」を使いします。
そして、以下のようにコードをかきます。
#include "MyFuncs.h" #include using namespace std; namespace MyFuncs { double Add(double a,double b){ return a+b; } }
ビルドする
あとは、ビルド->ソリューションのビルドを選択すればビルドが開始されます。
「Debug」用と「Release」用の二つが必要なので、両方ともビルドしておきましょう。
というのも、DebugとReleaseでライブラリファイルを使い分ける必要があるからです。
以上により、MyFuncs.libがDebugファイルとReleaseファイルにできあがります。
Debugファイルは名前を「MyFuncs-d.lib」としておきましょう。
これらのファイルと「MyFuncs.h」がライブラリを使用する際に必要となります。
ライブラリを使用する
ライブラリの使用方法を説明します。
まず、ライブラリを使いたいプロジェクトの場所に先ほど作成した
- 「MyFuncs.lib」
- 「MyFuncs-d.lib」
- 「MyFuncs.h」
をコピペします。
そして、
#include “MyFuncs.h”
をコードに追記します。
また、プロジェクト->○○○のプロパティ->構成プロパティ->リンカー->入力->追加の依存ファイルに
- 構成「Debug」の場合、MyFuncs-d.lib
- 構成「Release」の場合、MyFuncs.lib
と追記します。
これで準備完了で、あとはふつうに関数を使用できるようになります。たとえば、以下のように使用します。
double a; a=MyFuncs::Add(1,1);
最後に
以上のようにライブラリは簡単につくることができます。
ライブラリを作ることでプログラムをすばやく作ることができるので、作業効率を大幅に伸ばすことができます。
また、プログラムのミスを減らすことも可能です。
自分だけのライブラリを作ってみてください。
著者:安井 真人(やすい まさと)
@yasui_masatoさんをフォロー