チュートリアル: スタティック ライブラリを作成して使用する
このチュートリアルでは、C++ アプリケーションに使用するスタティック ライブラリ (.lib ファイル) を作成する方法について説明します。 スタティック ライブラリを使用すると、コードを有効に再利用できます。 機能を必要とするアプリケーションごとに同じルーチンを再実装するのではなく、ルーチンを 1 度スタティック ライブラリに記述しておき、アプリからそれを参照します。 スタティック ライブラリからリンクされるコードはアプリの一部となります。そのコードを使用するために別のファイルをインストールする必要はありません。
このチュートリアルでは、次の作業について説明します。
前提条件
C++ 言語の基本の理解。
スタティック ライブラリ プロジェクトを作成する
プロジェクトを作成する手順は、お使いの Visual Studio のバージョンによって異なります。 優先するバージョンの Visual Studio のドキュメントを表示するには、 [バージョン] セレクター コントロールを使用します。 このページの目次の一番上にあります。
Visual Studio でスタティック ライブラリ プロジェクトを作成するには
メニュー バーで、[ファイル]>[新規作成]>[プロジェクト] の順に選択して、[新しいプロジェクトの作成] ダイアログを開きます。
ダイアログの上部で、[言語] を [C++] に、[プラットフォーム] を [Windows] に、[プロジェクト タイプ] を [ライブラリ] に設定します。
フィルター処理されたプロジェクト タイプの一覧から、[Windows デスクトップ ウィザード] を選択して、[次へ] を選択します。
[新しいプロジェクトの構成] ページで、[プロジェクト名] ボックスに「MathLibrary」と入力して、プロジェクトの名前を指定します。 [ソリューション名] ボックスに「StaticMath」と入力します。 [作成] ボタンを選択して、[Windows デスクトップ プロジェクト] ダイアログを開きます。
[Windows デスクトップ プロジェクト] ダイアログの [アプリケーションの種類] の下で、[スタティック ライブラリ (.lib)] を選択します。
[追加オプション] で、[プリコンパイル済みヘッダー] チェック ボックスがオンになっている場合は、オフにします。 [空のプロジェクト] ボックスをオンにします。
[OK] を選択して、プロジェクトを作成します。
Visual Studio 2017 でスタティック ライブラリ プロジェクトを作成するには
メニュー バーで、 [ファイル]>[新規作成]>[プロジェクト] を選択します。
[新しいプロジェクト] ダイアログ ボックスで、[インストール済み]>[Visual C++]>[Windows デスクトップ] の順に選択します。 中央のウィンドウで、[Windows デスクトップ ウィザード] を選択します。
[名前] ボックスに、プロジェクトの名前 (たとえば「MathLibrary」) を入力します。 [ソリューション名] ボックスに、ソリューションの名前 (たとえば「StaticMath」) を入力します。 [OK] を選択します。
[Windows デスクトップ プロジェクト] ダイアログの [アプリケーションの種類] の下で、[スタティック ライブラリ (.lib)] を選択します。
[追加オプション] で、[プリコンパイル済みヘッダー] チェック ボックスがオンになっている場合は、オフにします。 [空のプロジェクト] ボックスをオンにします。
[OK] を選択して、プロジェクトを作成します。
Visual Studio 2015 でスタティック ライブラリ プロジェクトを作成するには
メニュー バーで、 [ファイル]>[新規作成]>[プロジェクト] を選択します。
[新しいプロジェクト] ダイアログ ボックスで、[インストール済み]>[テンプレート]>[Visual C++]>[Win32] の順に選択します。 中央のウィンドウで [Win32 コンソール アプリケーション]をクリックします。
[名前] ボックスに、プロジェクトの名前 (たとえば「MathLibrary」) を入力します。 [ソリューション名] ボックスに、ソリューションの名前 (たとえば「StaticMath」) を入力します。 [OK] を選択します。
[Win32 アプリケーション ウィザード] で、[次へ] を選択します。
[アプリケーションの設定] ページの [アプリケーションの種類] で、[スタティック ライブラリ] を選択します。 [追加オプション] で、[プリコンパイル済みヘッダー] チェック ボックスをオフにします。 [完了] を選択して、プロジェクトを作成します。
スタティック ライブラリにクラスを追加する
スタティック ライブラリにクラスを追加するには
新しいクラスのヘッダー ファイルを作成するには、ソリューション エクスプローラーで MathLibrary プロジェクトを右クリックしてショートカット メニューを開き、[追加]>[新しい項目] の順に選択します。
[新しい項目の追加] ダイアログ ボックスで、[Visual C++]>[コード] の順に選択します。 中央のウィンドウで、 [ヘッダー ファイル (.h)]をクリックします。 このヘッダー ファイルの名前 (たとえば「MathLibrary.h」) を指定して、[追加] ボタンを選択します。 ほとんど空白のヘッダー ファイルが表示されます。
加算、減算、乗算、除算などの一般的な数値演算を行うための、
Arithmetic
という名前のクラスの宣言を追加します。 コードは次のようになります。// MathLibrary.h #pragma once namespace MathLibrary { class Arithmetic { 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 static double Divide(double a, double b); }; }
新しいクラスのソース ファイルを作成するには、ソリューション エクスプローラーで MathLibrary プロジェクトのショートカット メニューを開き、[追加]>[新しい項目] の順に選択します。
[新しい項目の追加] ダイアログ ボックスの中央のペインで、[C++ ファイル (.cpp)] を選択します。 このソース ファイルの名前 (たとえば「MathLibrary.cpp」) を指定して、[追加] ボタンを選択します。 空白のソース ファイルが表示されます。
このソース ファイルを使って、
Arithmetic
クラスの機能を実装します。 コードは次のようになります。// MathLibrary.cpp // compile with: cl /c /EHsc MathLibrary.cpp // post-build command: lib MathLibrary.obj #include "MathLibrary.h" namespace MathLibrary { double Arithmetic::Add(double a, double b) { return a + b; } double Arithmetic::Subtract(double a, double b) { return a - b; } double Arithmetic::Multiply(double a, double b) { return a * b; } double Arithmetic::Divide(double a, double b) { return a / b; } }
スタティック ライブラリをビルドするには、メニュー バーで [ビルド]>[ソリューションのビルド] の順に選択します。 ビルドを行うと、他のプログラムで使用できるスタティック ライブラリ MathLibrary.lib が作成されます。
Note
プログラムを Visual Studio のコマンド ラインからビルドする場合、2 つの処理によってビルドする必要があります。 最初に、
cl /c /EHsc MathLibrary.cpp
を実行してコードをコンパイルし、MathLibrary.obj という名前のオブジェクト ファイルを作成します。(cl
コマンドは、Cl.exe コンパイラを起動し、/c
オプションはリンクを行わずにコンパイルすることを指定します。 詳しくは、「/c (リンクを行わないコンパイル)」をご覧ください。) 次に、lib MathLibrary.obj
を実行してコードをリンクし、スタティック ライブラリ MathLibrary.lib を作成します。 (lib
コマンドは、Lib.exe ライブラリ マネージャーを起動します。詳細については、「 LIB Reference」を参照してください)。
スタティック ライブラリを参照する C++ コンソール アプリを作成する
Visual Studio でスタティック ライブラリを参照する C++ コンソール アプリを作成するには
ソリューション エクスプローラーで、最上位ノードであるソリューション 'StaticMath' を右クリックし、ショートカット メニューを開きます。 [追加]、[新しいプロジェクト] の順に選択して、[新しいプロジェクトの追加] ダイアログを開きます。
ダイアログの上部で、[プロジェクト タイプ] フィルターを [コンソール] に設定します。
フィルター処理されたプロジェクト タイプの一覧から、 [コンソール アプリ] を選択して、 [次へ] を選択します。 次のページで、[名前] ボックスに「MathClient」と入力してプロジェクトの名前を指定します。
[作成] ボタンを選択してクライアント プロジェクトを作成します。
コンソール アプリケーションを作成すると、空のプログラムが作成されます。 ソース ファイルの名前は、前の処理で付けた名前と同じになります。 この例では、それには
MathClient.cpp
という名前が付いています。
Visual Studio 2017 でスタティック ライブラリを参照する C++ コンソール アプリを作成するには
ソリューション エクスプローラーで、最上位ノードであるソリューション 'StaticMath' を右クリックし、ショートカット メニューを開きます。 [追加]>[新しいプロジェクト] を選択して、[新しいプロジェクトの追加] ダイアログ ボックスを開きます。
[新しいプロジェクトの追加] ダイアログ ボックスで、[インストール済み]>[Visual C++]>[Windows デスクトップ] の順に選択します。 中央のウィンドウで、[Windows デスクトップ ウィザード] を選択します。
[名前] ボックスに、プロジェクトの名前 (たとえば「MathClient」) を入力します。 [OK] を選択します。
[Windows デスクトップ プロジェクト] ダイアログの [アプリケーションの種類] の下で、[コンソール アプリケーション (.exe)] を選択します。
[追加オプション] で、[プリコンパイル済みヘッダー] チェック ボックスがオンになっている場合は、オフにします。
[OK] を選択して、プロジェクトを作成します。
コンソール アプリケーションを作成すると、空のプログラムが作成されます。 ソース ファイルの名前は、前の処理で付けた名前と同じになります。 この例では、それには
MathClient.cpp
という名前が付いています。
Visual Studio 2015 でスタティック ライブラリを参照する C++ コンソール アプリを作成するには
ソリューション エクスプローラーで、最上位ノードであるソリューション 'StaticMath' を右クリックし、ショートカット メニューを開きます。 [追加]>[新しいプロジェクト] を選択して、[新しいプロジェクトの追加] ダイアログ ボックスを開きます。
[新しいプロジェクトの追加] ダイアログ ボックスで、[インストール済み]>[Visual C++]>[Win32] の順に選択します。 中央のウィンドウで [Win32 コンソール アプリケーション]をクリックします。
[名前] ボックスに、プロジェクトの名前 (たとえば「MathClient」) を入力します。 [OK] を選択します。
[Win32 アプリケーション ウィザード] ダイアログで、[次へ] を選択します。
[アプリケーションの設定] ページの [アプリケーションの種類]で、[コンソール アプリケーション] が選択されていることを確認します。 [追加オプション] で、[プリコンパイル済みヘッダー] をオフにしてから、[空のプロジェクト] チェック ボックスをオンにします。 [完了] を選択して、プロジェクトを作成します。
空のプロジェクトにソース ファイルを追加するには、ソリューション エクスプローラーで MathClient プロジェクトを右クリックしてショートカット メニューを開き、[追加] > [新しい項目] の順に選択します。
[新しい項目の追加] ダイアログ ボックスで、[Visual C++]>[コード] の順に選択します。 中央のウィンドウで、 [C++ ファイル (.cpp)]をクリックします。 このソース ファイルの名前 (たとえば「MathClient.cpp」) を指定して、[追加] ボタンを選択します。 空白のソース ファイルが表示されます。
アプリ内でスタティック ライブラリの機能を使用する
アプリケーションでのスタティック ライブラリの機能を使用するには
スタティック ライブラリの数値演算ルーチンを使用するには、それを参照する必要があります。 ソリューション エクスプローラーで MathClient プロジェクトのショートカット メニューを開いてから、[追加]>[参照] の順に選択します。
[参照の追加] ダイアログ ボックスには、参照できるライブラリが表示されます。 [プロジェクト] タブでは、現在のソリューション内のプロジェクトと、それらによって参照されるすべてのライブラリが一覧表示されます。 [プロジェクト] タブを開き、MathLibrary のチェック ボックスをオンにし、[OK] ボタンを選択します。
MathLibrary.h
ヘッダー ファイルを参照するには、含まれるディレクトリ パスを変更する必要があります。 ソリューション エクスプローラーで MathClient を右クリックし、ショートカット メニューを開きます。 [プロパティ] を選択して、[MathClient プロパティ ページ] ダイアログ ボックスを開きます。[MathClient プロパティ ページ] ダイアログ ボックスで、[構成] ドロップダウンを [すべての構成] に設定します。 [プラットフォーム] ドロップダウンを [すべてのプラットフォーム] に設定します。
[構成プロパティ]>[C/C++]>[全般] プロパティ ページを選択します。 [追加のインクルード ディレクトリ] プロパティで、MathLibrary ディレクトリへのパスを指定するか、参照します。
ディレクトリ パスを参照するには、次のようにします。
[追加のインクルード ディレクトリ] プロパティ値のドロップダウン リストを開き、[編集] を選択します。
[追加のインクルード ディレクトリ] ダイアログ ボックスで、テキスト ボックスの上部をダブルクリックします。 次に、行の末尾にある省略記号ボタン ([...]) を選択します。
[ディレクトリの選択] ダイアログ ボックスで、1 レベル上に移動し、MathLibrary ディレクトリを選択します。 次に、[フォルダーの選択] ボタンを選択して、選択内容を保存します。
[追加のインクルード ディレクトリ] ダイアログ ボックスで、[OK] ボタンを選択します。
[プロパティ ページ] ダイアログ ボックスで、[OK] ボタンを選択してプロジェクトへの変更を保存します。
これで、コードに
#include "MathLibrary.h"
ヘッダーを含めることによって、このアプリでArithmetic
クラスを使用できるようになりました。MathClient.cpp
の内容を次のコードに置き換えます。// MathClient.cpp // compile with: cl /EHsc MathClient.cpp /link MathLibrary.lib #include <iostream> #include "MathLibrary.h" int main() { double a = 7.4; int b = 99; std::cout << "a + b = " << MathLibrary::Arithmetic::Add(a, b) << std::endl; std::cout << "a - b = " << MathLibrary::Arithmetic::Subtract(a, b) << std::endl; std::cout << "a * b = " << MathLibrary::Arithmetic::Multiply(a, b) << std::endl; std::cout << "a / b = " << MathLibrary::Arithmetic::Divide(a, b) << std::endl; return 0; }
実行可能ファイルをビルドするには、メニュー バーで [ビルド]>[ソリューションのビルド] の順に選択します。
アプリを実行する
アプリを実行するには
MathClient が既定のプロジェクトとして選択されていることを確認します。 これを選択するには、ソリューション エクスプローラーで MathClient を右クリックしてショートカット メニューを開き、[スタートアップ プロジェクトに設定] を選択します。
プロジェクトを実行するには、メニュー バーで [デバッグ]>[デバッグなしで開始] の順にクリックします。 出力は次のようになります。
a + b = 106.4 a - b = -91.6 a * b = 732.6 a / b = 0.0747475