チュートリアル: スタティック ライブラリを作成して使用する
このチュートリアルでは、C++ アプリケーションに使用するスタティック ライブラリ (.lib ファイル) を作成する方法について説明します。 スタティック ライブラリを使用すると、コードを有効に再利用できます。 機能を必要とするアプリケーションごとに同じルーチンを再実装するのではなく、ルーチンを 1 度スタティック ライブラリに記述しておき、アプリからそれを参照します。 スタティック ライブラリからリンクされたコードは、アプリの一部になります。コードを使用するために別の — ファイルをインストールする必要はありません。
このチュートリアルでは、次の作業について説明します。
必須コンポーネント
C++ 言語の基本の理解。
スタティック ライブラリ プロジェクトを作成する
プロジェクトを作成する手順は、お使いの Visual Studio のバージョンによって異なります。 優先するバージョンの Visual Studio のドキュメントを表示するには、 [バージョン] セレクター コントロールを使用します。 このページの目次の一番上にあります。
Visual Studio でスタティック ライブラリ プロジェクトを作成するには
メニュー バーで[ファイル] [新しいファイル]Projectクリックして、[新しいファイルの作成] ダイアログ Project開きます。
ダイアログの上部で、[言語]を[C++]に設定し、[プラットフォーム] を [Windows] に設定しProjectを [ライブラリ] に設定します。
フィルター処理されたプロジェクト タイプの一覧から、 [Windows デスクトップ ウィザード] を選択して、 [次へ] を選択します。
[新しいプロジェクトの構成] ページで、 [プロジェクト名] ボックスに「MathLibrary」と入力して、プロジェクトの名前を指定します。 [ソリューション名] ボックスに「StaticMath」と入力します。 [作成] ボタンを選択して、 [Windows デスクトップ プロジェクト] ダイアログを開きます。
[Windows デスクトップ プロジェクト] ダイアログの [アプリケーションの種類] の下で、 [スタティック ライブラリ (.lib)] を選択します。
[追加オプション] で、 [プリコンパイル済みヘッダー] チェック ボックスがオンになっている場合は、オフにします。 [空のプロジェクト] ボックスをオンにします。
[OK] を選択して、プロジェクトを作成します。
Visual Studio 2017 でスタティック ライブラリ プロジェクトを作成するには
メニュー バーで、[ファイル][新規作成][プロジェクト] の順に選択します。
[新しいデスクトップProject]ダイアログ ボックスで、 [デスクトップにインストールVisual C++Windows選択します。 中央のウィンドウで、 [Windows デスクトップ ウィザード] を選択します。
[名前] ボックスに、プロジェクトの名前 ——— など) を—します。 ソリューションの名前 ([ソリューション名] ボックスに ————します。 [OK] を選択します。
[Windows デスクトップ プロジェクト] ダイアログの [アプリケーションの種類] の下で、 [スタティック ライブラリ (.lib)] を選択します。
[追加オプション] で、 [プリコンパイル済みヘッダー] チェック ボックスがオンになっている場合は、オフにします。 [空のプロジェクト] ボックスをオンにします。
[OK] を選択して、プロジェクトを作成します。
Visual Studio 2015 でスタティック ライブラリ プロジェクトを作成するには
メニュー バーで、[ファイル][新規作成][プロジェクト] の順に選択します。
[新しいテンプレートのProject]ダイアログ ボックスで、Win32 のインストール済み テンプレートVisual C++選択します。 中央のウィンドウで [Win32 コンソール アプリケーション] をクリックします。
[名前] ボックスに、プロジェクトの名前 ——— など) を—します。 ソリューションの名前 ([ソリューション名] ボックスに ————します。 [OK] を選択します。
[Win32 アプリケーション ウィザード] で、 [次へ] を選択します。
[アプリケーションの設定] ページの [アプリケーションの種類] で、 [スタティック ライブラリ] を選択します。 [追加オプション] で、 [プリコンパイル済みヘッダー] チェック ボックスをオフにします。 [完了] を選択して、プロジェクトを作成します。
スタティック ライブラリにクラスを追加する
スタティック ライブラリにクラスを追加するには
新しいクラスのヘッダー ファイルを作成するには、右クリックして ソリューション エクスプローラー でMathLibraryプロジェクトのショートカット メニューを開き、[新しい項目の追加] を選択します。
[新しい項目の追加] ダイアログボックスで、[コード] Visual C++選択します。 中央のウィンドウで、 [ヘッダー ファイル (.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)] を選択します。 ソース ファイルの名前 ——など) を指定し、[ — 追加] ボタン—します。 空白のソース ファイルが表示されます。
このソース ファイルを使って、
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 が作成されます。
注意
プログラムを Visual Studio のコマンド ラインからビルドする場合、2 つの処理によってビルドする必要があります。 最初に、
cl /c /EHsc MathLibrary.cppを実行してコードをコンパイルしcl /c /EHsc MathLibrary.cppという名前のオブジェクト ファイルを作成します。(このclコマンドはコンパイラを呼び出Cl.exe、オプションはリンクせずに/cコンパイルを指定します。 詳細については 、「/c (リンクなしでコンパイルする)」を参照してください。 次に、lib MathLibrary.objを実行してコードをリンクし、スタティック ライブラリlib MathLibrary.obj。 (libコマンドは、Lib.exe ライブラリ マネージャーを起動します。 詳細については、「 LIB Reference」を参照してください)。
スタティック ライブラリを参照する C++ コンソール アプリを作成する
Visual Studio でスタティック ライブラリを参照する C++ コンソール アプリを作成するには
ソリューション エクスプローラーで、最上位ノードであるソリューション 'StaticMath' を右クリックし、ショートカット メニューを開きます。 [Add New Project]を選択して、[Add a New Project]を開きます。
ダイアログの上部で、 [プロジェクト タイプ] フィルターを [コンソール] に設定します。
フィルター処理されたプロジェクト タイプの一覧から、 [コンソール アプリ] を選択して、 [次へ] を選択します。 次のページで、 [名前] ボックスに「MathClient」と入力してプロジェクトの名前を指定します。
[作成] ボタンを選択してクライアント プロジェクトを作成します。
コンソール アプリケーションを作成すると、空のプログラムが作成されます。 ソース ファイルの名前は、前の処理で付けた名前と同じになります。 この例では、それには
MathClient.cppという名前が付いています。
Visual Studio 2017 でスタティック ライブラリを参照する C++ コンソール アプリを作成するには
ソリューション エクスプローラーで、最上位ノードであるソリューション 'StaticMath' を右クリックし、ショートカット メニューを開きます。 [Add New Project]を選択して、[Adda New Project]ダイアログ ボックスを開きます。
[新しいパッケージの追加Project]ダイアログ ボックスで、 [デスクトップにインストールVisual C++Windows選択します。 中央のウィンドウで、 [Windows デスクトップ ウィザード] を選択します。
[名前] ボックスに、プロジェクトの名前 ——— など)—します。 [OK] を選択します。
[Windows デスクトップ プロジェクト] ダイアログの [アプリケーションの種類] の下で、 [コンソール アプリケーション (.exe)] を選択します。
[追加オプション] で、 [プリコンパイル済みヘッダー] チェック ボックスがオンになっている場合は、オフにします。
[OK] を選択して、プロジェクトを作成します。
コンソール アプリケーションを作成すると、空のプログラムが作成されます。 ソース ファイルの名前は、前の処理で付けた名前と同じになります。 この例では、それには
MathClient.cppという名前が付いています。
Visual Studio 2015 でスタティック ライブラリを参照する C++ コンソール アプリを作成するには
ソリューション エクスプローラーで、最上位ノードであるソリューション 'StaticMath' を右クリックし、ショートカット メニューを開きます。 [Add New Project]を選択して、[Adda New Project]ダイアログ ボックスを開きます。
[新しいファイルの追加Project]ダイアログボックスで、Win32 の [ インストール済みVisual C++選択します。 中央のウィンドウで [Win32 コンソール アプリケーション] をクリックします。
[名前] ボックスに、プロジェクトの名前 ——— など)—します。 [OK] を選択します。
[Win32 アプリケーション ウィザード] ダイアログで、 [次へ] を選択します。
[アプリケーションの設定] ページの [アプリケーションの種類] で、 [コンソール アプリケーション] が選択されていることを確認します。 [追加オプション] で、 [プリコンパイル済みヘッダー] をオフにしてから、 [空のプロジェクト] チェック ボックスをオンにします。 [完了] を選択して、プロジェクトを作成します。
空のプロジェクトにソース ファイルを追加するには、右クリックして ソリューション エクスプローラー でMathClientプロジェクトのショートカット メニューを開き、 [新しい項目の追加] を選択します。
[新しい項目の追加] ダイアログボックスで、[コード] Visual C++選択します。 中央のウィンドウで、 [C++ ファイル (.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
関連項目
チュートリアル: ダイナミック リンク ライブラリの作成と使用 (C++)
デスクトップ アプリケーション (Visual C++)