Visual Studio 2017 を使用することをお勧めします

チュートリアル: スタティック ライブラリの作成と使用 (C++)

 

公開日: 2016年7月

Visual Studio 2017 RC の最新のドキュメントの詳細については、Visual Studio 2017 RC ドキュメントをご参照ください。

このチュートリアルでは、C++ アプリケーションに使用するスタティック ライブラリ (.lib ファイル) を作成する方法について説明します。 スタティック ライブラリを使用すると、コードを有効に再利用できます。 その機能を必要とするアプリケーションごとに同じルーチンを再実装するのではなく、ルーチンを 1 度スタティック ライブラリに記述しておき、アプリケーションからそれを参照します。 スタティック ライブラリからリンクされたコードはアプリケーションの一部となります。コードを使用する別のファイルをインストールする必要はありません。

このチュートリアルでは、次の作業について説明します。

C++ 言語の基本の理解。

スタティック ライブラリ プロジェクトを作成するには

  1. メニュー バーで [ファイル][新規][プロジェクト] の順にクリックします。

  2. [新しいプロジェクト] ダイアログ ボックスの左ウィンドウで、[インストールされたテンプレート][Visual C++] を展開し、[Win32] をクリックします。

  3. 中央のウィンドウで [Win32 コンソール アプリケーション] をクリックします。

  4. [名前] ボックスにプロジェクトの名前を入力します。たとえば、「MathFuncsLib」と入力します。[ソリューション名] ボックスにソリューションの名前を入力します。たとえば、「StaticLibrary」と入力します。[OK] をクリックします。

  5. [Win32 アプリケーション ウィザード] ダイアログ ボックスの [概要] ページで、[次へ] をクリックします。

  6. [アプリケーションの設定] ページの [アプリケーションの種類] で、[スタティック ライブラリ] を選択します。

  7. [アプリケーションの設定] ページの [追加のオプション] で、[プリコンパイル済みヘッダー] のチェック ボックスをオフにします。

  8. [完了] をクリックすると、プロジェクトが作成されます。

スタティック ライブラリにクラスを追加するには

  1. 新しいクラスのヘッダー ファイルを作成するには、ソリューション エクスプローラーMathFuncsLib プロジェクトのショートカット メニューを開き、[新しい項目の追加]を選択します。[新しい項目の追加] ダイアログ ボックスの左ウィンドウで、[Visual C++] の下の [コード] を選択します。 中央のウィンドウで、[ヘッダー ファイル (.h)] をクリックします。 このヘッダー ファイルの名前を指定します。たとえば、「MathFuncsLib.h」と入力します。[追加] ボタンをクリックします。 空白のヘッダー ファイルが表示されます。

  2. 加算、減算、乗算、除算などの一般的な数値演算を行うための、MyMathFuncs という名前のクラスを追加します。 コードは次のようになります。

    // 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
            static double Divide(double a, double b);
        };
    } 
    

  3. 新しいクラスのソース ファイルを作成するには、ソリューション エクスプローラーMathFuncsLib プロジェクトのショートカット メニューを開き、[新しい項目の追加] を選択します。[新しい項目の追加] ダイアログ ボックスの左ウィンドウで、[Visual C++] の下の [コード] を選択します。 中央のウィンドウで、[C++ ファイル (.cpp)] をクリックします。 このソース ファイルの名前を指定します。たとえば、「MathFuncsLib.cpp」と入力します。[追加] ボタンをクリックします。 空白のソース ファイルが表示されます。

  4. このソース ファイルを使って、MyMathFuncs の機能を実装します。 コードは次のようになります。

    // MathFuncsLib.cpp
    // compile with: cl /c /EHsc MathFuncsLib.cpp
    // 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)
        {
            return a / b;
        }
    }
    

  5. メニュー バーで [ビルド][ソリューションのビルド] の順にクリックし、スタティック ライブラリをコンパイルします。 これにより、他のプログラムで使用できるスタティック ライブラリが作成されます。

    System_CAPS_ICON_note.jpg メモ

    プログラムを Visual Studio のコマンド ラインからビルドする場合、2 つの処理によってビルドする必要があります。 最初に、cl /c /EHsc MathFuncsLib.cpp を実行してコードをコンパイルし、MathFuncsLib.obj という名前のオブジェクト ファイルを作成します。 (cl コマンドは、Cl.exe コンパイラを起動し、/c オプションはリンクを行わずにコンパイルすることを指定します。 詳細については、「/c (リンクを行わないコンパイル)」を参照してください)。 次に、lib MathFuncsLib.obj を実行してコードをリンクし、スタティック ライブラリ MathFuncsLib.lib を作成します。 (lib コマンドは、Lib.exe ライブラリ マネージャーを起動します。 詳細については、「LIB リファレンス」を参照してください)。

スタティック ライブラリを参照する C++ コンソール アプリケーションを作成するには

  1. メニュー バーで [ファイル][新規][プロジェクト] の順にクリックします。

  2. 左のウィンドウで、[Visual C++] から [Win32] をクリックします。

  3. 中央のウィンドウで [Win32 コンソール アプリケーション] をクリックします。

  4. [名前] ボックスにプロジェクトの名前を入力します。たとえば、「MyExecRefsLib」と入力します。[ソリューション] の横のドロップダウン リストで、[ソリューションに追加] をクリックします。 これにより、スタティック ライブラリを含むソリューションに新しいプロジェクトを追加します。[OK] をクリックします。

  5. [Win32 アプリケーション ウィザード] ダイアログ ボックスの [概要] ページで、[次へ] をクリックします。

  6. [アプリケーションの設定] ページの [アプリケーションの種類] で、[コンソール アプリケーション] を選択します。

  7. [アプリケーションの設定] ページの [追加のオプション] で、[プリコンパイル済みヘッダー] のチェック ボックスをオフにします。

  8. [完了] をクリックすると、プロジェクトが作成されます。

アプリケーションでのスタティック ライブラリの機能を使用するには

  1. コンソール アプリケーションを作成すると、空のプログラムが作成されます。 ソース ファイルの名前は、前の処理で付けた名前と同じになります。 この例では、「MyExecRefsLib.cpp」という名前です。

  2. スタティック ライブラリの数値演算ルーチンを使用するには、それを参照する必要があります。 そのためには、ソリューション エクスプローラーで、MyExecRefsLib プロジェクトのショートカット メニューを開き、[参照設定] をクリックします。MyExecRefsLib[プロパティ ページ] ダイアログ ボックスで、[共通プロパティ] ノードを展開し、[Framework と参照] をクリックします。次に、[新しい参照の追加] ボタンをクリックします。[参照設定] ダイアログ ボックスの詳細については、「参照の追加」を参照してください。

  3. [参照の追加] ダイアログ ボックスには、参照できるライブラリが表示されます。[プロジェクト] タブでは、現在のソリューション内のプロジェクト、およびそれらに含まれるすべてのライブラリが表示されます。[プロジェクト] タブで、MathFuncsLib のチェック ボックスをオンにし、[OK] ボタンをクリックします。

  4. MathFuncsLib.h ヘッダー ファイルを参照するには、含まれるディレクトリ パスを変更する必要があります。MyExecRefsLib[プロパティ ページ] ダイアログ ボックスで、[構成プロパティ] ノードを展開し、[C/C++] ノードを展開して、[全般] をクリックします。[追加のインクルード ディレクトリ] の横で、MathFuncsLib ディレクトリへのパスを入力するか、参照によって指定します。

    ディレクトリ パスを参照するには、プロパティ値のドロップダウン リスト ボックスを開き、[編集] をクリックします。[追加のインクルード ディレクトリ] ダイアログ ボックスのテキスト ボックスで、空白行を選択して、行末の省略記号ボタン ([...]) をクリックします。[ディレクトリの選択] ダイアログ ボックスで、MathFuncsLib ディレクトリを選択し、[フォルダーの選択] ボタンをクリックしてその選択を保存し、ダイアログ ボックスを閉じます。 次に[追加のインクルード ディレクトリ] ダイアログ ボックスで、[OK] ボタンをクリックし、[プロパティ ページ] ダイアログ ボックスで、[OK] ボタンをクリックしてプロジェクトへの変更を保存します。

  5. これで、MyMathFuncs クラスをこのアプリケーションで使用できます。 そのために、MyExecRefsLib.cpp の内容を次のコードに置き換えます。

    // MyExecRefsLib.cpp
    // compile with: cl /EHsc MyExecRefsLib.cpp /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;
    }
    

  6. メニュー バーで [ビルド][ソリューションのビルド] の順にクリックして、実行可能ファイルをビルドします。

アプリケーションを実行するには

  1. ソリューション エクスプローラーMyExecRefsLib のショートカット メニューを開き、[スタートアップ プロジェクトに設定] をクリックして、MyExecRefsLib が既定のプロジェクトとして選択されていることを確認します。

  2. プロジェクトを実行するには、メニュー バーで [デバッグ][デバッグなしで開始] の順にクリックします。 出力は、次のようになります。

    a + b = 106.4 a - b = -91.6 a * b = 732.6 a / b = 0.0747475  
    
    

Visual C++ ガイド ツアー
チュートリアル: ダイナミック リンク ライブラリの作成と使用 (C++)
Windows デスクトップ アプリケーション (Visual C++)

表示: