チュートリアル: スタティック ライブラリの作成と使用 (C++)
更新 : 2010 年 9 月
次に作成するライブラリの種類は、スタティック ライブラリ (LIB) です。 スタティック ライブラリを使用すると、コードを有効に再利用できます。 作成するプログラムごとに同じルーチンを再実装するのではなく、ルーチンを一度記述しておき、その機能を必要とするアプリケーションからそれらを参照します。
このチュートリアルでは、次のタスクの実行方法を示します。
スタティック ライブラリ プロジェクトを作成します。
スタティック ライブラリにクラスを追加します。
スタティック ライブラリを参照するコンソール アプリケーションを作成します。
アプリケーションでスタティック ライブラリの機能を使用します。
アプリケーションを実行します。
必須コンポーネント
このトピックは、C++ 言語の基本を理解していることを前提としています。 C++ の学習を始めたばかりのユーザーには、MSDN ライブラリの「Tier One: C++ Beginner's Guide」をお勧めします。
スタティック ライブラリ プロジェクトを作成するには
[ファイル] メニューの [新規作成] をポイントし、[プロジェクト] をクリックします。
[プロジェクトの種類] ペインで、[Visual C++] の [Win32] をクリックします。
[テンプレート] ペインの [Win32 コンソール アプリケーション] をクリックします。
プロジェクトとして「MathFuncsLib」などの名前を付け、"プロジェクト名" フィールドに入力します。 ソリューションとして「StaticLibrary」などの名前を付け、"ソリューション名" フィールドに入力します。
[OK] をクリックして、Win32 アプリケーション ウィザードを起動します。 [Win32 アプリケーション ウィザード] ダイアログ ボックスの [概要] ページで、[次へ] をクリックします。
Win32 アプリケーション ウィザードの [アプリケーションの設定] ページで、[アプリケーションの種類] の [スタティック ライブラリ] を選択します。
Win32 アプリケーション ウィザードの [アプリケーションの設定] ページで、[追加のオプション] の下にある [プリコンパイル済みヘッダー] チェック ボックスをオフにします。
[完了] をクリックして、プロジェクトを作成します。
スタティック ライブラリにクラスを追加するには
新しいクラスのヘッダー ファイルを作成するには、[プロジェクト] メニューの [新しい項目の追加] をクリックします。 [新しい項目の追加] ダイアログ ボックスが表示されます。 カテゴリ ペインで、[Visual C++] の [コード] をクリックします。 テンプレート ペインの [ヘッダー ファイル (.h)] をクリックします。 ヘッダー ファイルとして「MathFuncsLib.h」などの名前を付けて、[追加] をクリックします。 空白のファイルが表示されます。
加算、減算、乗算、除算などの一般的な数値演算を行うための、MyMathFuncs という名前のクラスを追加します。 そのために、MathFuncsLib.h の内容を次のコードに置き換えます。
// MathFuncsLib.h namespace MathFuncs { class MyMathFuncs { public: // Returns a + b static double Add(double a, double b); // Returns a - b static double Subtract(double a, double b); // Returns a * b static double Multiply(double a, double b); // Returns a / b // Throws DivideByZeroException if b is 0 static double Divide(double a, double b); }; }
新しいクラスのソース ファイルを作成するには、[プロジェクト] メニューの [新しい項目の追加] をクリックします。 [新しい項目の追加] ダイアログ ボックスが表示されます。 カテゴリ ペインで、[Visual C++] の [コード] をクリックします。 テンプレート ペインの [C++ ファイル (.cpp)] をクリックします。 ソース ファイルとして「MathFuncsLib.cpp」などの名前を付けて、[追加] をクリックします。 空白のファイルが表示されます。
ソース ファイルに MyMathFuncs の機能を実装します。 そのために、MathFuncsLib.cpp の内容を次のコードに置き換えます。
// MathFuncsLib.cpp // compile with: /c /EHsc // post-build command: lib MathFuncsLib.obj #include "MathFuncsLib.h" #include <stdexcept> using namespace std; namespace MathFuncs { double MyMathFuncs::Add(double a, double b) { return a + b; } double MyMathFuncs::Subtract(double a, double b) { return a - b; } double MyMathFuncs::Multiply(double a, double b) { return a * b; } double MyMathFuncs::Divide(double a, double b) { if (b == 0) { throw new invalid_argument("b cannot be zero!"); } return a / b; } }
プロジェクトをスタティック ライブラリにビルドするには、[プロジェクト] メニューの [プロパティ] をクリックします。 左ペインで、[構成プロパティ] の下の [全般] をクリックします。 右ペインで、[構成の種類] を [スタティック ライブラリ (.lib)] に変更します。 [OK] をクリックして、変更を保存します。
注意
プログラムをコマンド ラインからビルドする場合、2 つの処理によってビルドする必要があります。 最初に、/c コンパイラ オプションを付けて Cl.exe を使用することによりコードをコンパイルします (cl /c /EHsc MathFuncsLib.cpp)。 これにより、MathFuncsLib.obj という名前のオブジェクト ファイルが作成されます。 詳細については、「/c (リンクを行わないコンパイル)」を参照してください。 次に、ライブラリ マネージャー Lib.exe を使用してコードをリンクします (lib MathFuncsLib.obj)。 これにより、スタティック ライブラリ MathFuncsLib.lib が作成されます。 ライブラリ マネージャーの詳細については、「LIB リファレンス」を参照してください。
[ビルド] メニューの [ソリューションのビルド] をクリックし、スタティック ライブラリをコンパイルします。 これにより、他のプログラムで使用できるスタティック ライブラリが作成されます。
スタティック ライブラリを参照するコンソール アプリケーションを作成するには
作成したスタティック ライブラリを参照して使用するアプリケーションを作成するには、[ファイル] メニューの [新規作成] をポイントし、[プロジェクト] をクリックします。
[プロジェクトの種類] ペインで、[Visual C++] の [Win32] をクリックします。
[テンプレート] ペインの [Win32 コンソール アプリケーション] をクリックします。
プロジェクトに「MyExecRefsLib」などの名前を付け、"プロジェクト名" フィールドに入力します。 [ソリューション] の横のドロップダウン リスト ボックスで、[ソリューションに追加] をクリックします。 これにより、スタティック ライブラリと同じソリューションに新しいプロジェクトが追加されます。
[OK] をクリックして、Win32 アプリケーション ウィザードを起動します。 [Win32 アプリケーション ウィザード] ダイアログ ボックスの [概要] ページで、[次へ] をクリックします。
Win32 アプリケーション ウィザードの [アプリケーションの設定] ページで、[アプリケーションの種類] の [コンソール アプリケーション] を選択します。
Win32 アプリケーション ウィザードの [アプリケーションの設定] ページで、[追加のオプション] の下にある [プリコンパイル済みヘッダー] をオフにします。
[完了] をクリックして、プロジェクトを作成します。
アプリケーションでスタティック ライブラリの機能を使用するには
コンソール アプリケーションを作成すると、ウィザードによって空のプログラムが作成されます。 ソース ファイルの名前は、前の処理でプロジェクトに付けた名前と同じになります。 この例では、「MyExecRefsLib.cpp」という名前です。
スタティック ライブラリの数値演算ルーチンを使用するには、そのスタティック ライブラリを参照する必要があります。 このためには、[プロジェクト] メニューの [参照] をクリックします。 MyExecRefsLib の [プロパティ ページ] ダイアログ ボックスで、[共通プロパティ] ノードを展開し、次に [新しい参照の追加] をクリックします。 [参照設定] ダイアログ ボックスの詳細については、「[Framework と参照] ([<プロジェクト名> プロパティ ページ] ダイアログ ボックス - [共通プロパティ])」を参照してください。
[参照の追加] ダイアログ ボックスが表示されます。 [プロジェクト] タブでは、現在のソリューション内のすべてのプロジェクト、および参照可能なすべてのライブラリの一覧が表示されます。 [プロジェクト] タブで、[MathFuncsLib] をクリックします。 [OK] をクリックします。
MathFuncsLib.h ヘッダー ファイルを参照するには、インクルード ディレクトリ パスを変更する必要があります。 MyExecRefsLib の [プロパティ ページ] ダイアログ ボックスで、[構成プロパティ] ノードを展開し、次に [C/C++] ノードを展開して、[全般] をクリックします。 [追加のインクルード ディレクトリ] プロパティ値に、MathFuncsLib.h ディレクトリへのパスを入力しするか、参照によって指定します。
ディレクトリ パスを参照するには、プロパティ値のドロップダウン リスト ボックスで、[編集] をクリックします。 [追加のインクルード ディレクトリ] ダイアログ ボックスのテキスト ボックスで、空白行を選択して、行末の省略記号ボタン ([...]) をクリックします。 [ディレクトリの選択] ダイアログ ボックスで、MathFuncsLib ディレクトリを選択し、[フォルダーの選択] をクリックしてその選択を保存し、ダイアログ ボックスを閉じます。 [追加のインクルード ディレクトリ] ダイアログ ボックスで、[OK] をクリックします。
これで、MyMathFuncs クラスをこのアプリケーションで使用できます。 そのために、MyExecRefsLib.cpp の内容を次のコードに置き換えます。
// MyExecRefsLib.cpp // compile with: /EHsc /link MathFuncsLib.lib #include <iostream> #include "MathFuncsLib.h" using namespace std; int main() { double a = 7.4; int b = 99; cout << "a + b = " << MathFuncs::MyMathFuncs::Add(a, b) << endl; cout << "a - b = " << MathFuncs::MyMathFuncs::Subtract(a, b) << endl; cout << "a * b = " << MathFuncs::MyMathFuncs::Multiply(a, b) << endl; cout << "a / b = " << MathFuncs::MyMathFuncs::Divide(a, b) << endl; return 0; }
[ビルド] メニューの [ソリューションのビルド] をクリックして、実行可能ファイルをビルドします。
アプリケーションを実行するには
MyExecRefsLib が既定のプロジェクトとして選択されていることを確認します。 ソリューション エクスプローラーで [MyExecRefsLib] を選択し、次に [プロジェクト] メニューの [スタートアップ プロジェクトに設定] をクリックします。
プロジェクトを実行するには、[デバッグ] メニューの [デバッグなしで開始] を選択します。 出力は、次のようになります。
a + b = 106.4 a - b = -91.6 a * b = 732.6 a / b = 0.0747475
次の手順
前へ: チュートリアル: ダイナミック リンク ライブラリの作成と使用 (C++) | 次へ: チュートリアル: マネージ アセンブリの作成と使用 (C++)
参照
処理手順
その他の技術情報
履歴の変更
日付 |
履歴 |
理由 |
---|---|---|
2010 年 9 月 |
「アプリケーションでスタティック ライブラリの機能を使用するには」の手順 4 を明記しました。 |
カスタマー フィードバック |