次の方法で共有


マネージ アセンブリの作成と使用 (C++)

更新 : 2007 年 11 月

次に作成するライブラリの種類は、マネージ アセンブリです。マネージ アセンブリを使用すると、コードを有効に再利用できます。作成するプログラムごとにこれらの同じルーチンを再実装するのではなく、ルーチンを一度記述しておき、その機能を必要とするアプリケーションからそれらを参照します。

ここでは、次の内容について説明します。

  • 新しいクラス ライブラリ プロジェクトの作成。

  • クラス ライブラリへのクラスの追加。

  • クラス ライブラリを参照するアプリケーションの作成。

  • コンソール アプリケーションでのクラス ライブラリの機能の使用。

  • アプリケーションの実行。

前提条件

このトピックは、C++ 言語の基本を理解していることを前提としています。C++ の学習を始めたばかりのユーザーには、『C++ Beginner's Guide』(Herb Schildt 著) をお勧めします。このガイドはオンラインで入手できます (https://go.microsoft.com/fwlink/?LinkId=115303)。

新しいクラス ライブラリ プロジェクトを作成するには

  1. [ファイル] メニューの [新規作成] をポイントし、[プロジェクト] をクリックします。

  2. [プロジェクトの種類] ペインで、[Visual C++] の [CLR] をクリックします。これにより、共通言語ランタイムを対象とするプロジェクトが作成されます。

  3. [テンプレート] ペインで [クラス ライブラリ] をクリックします。

  4. プロジェクトに「MathFuncsAssembly」などの名前を付け、[名前] フィールドに入力します。ソリューションに「ManagedAssemblies」などの名前を付け、[ソリューション名] フィールドに入力します。

  5. [OK] をクリックして、プロジェクトを作成します。

  6. 既定では、新しいプロジェクトを作成する場合、それらはプリコンパイル済みヘッダーを使用するように設定されます。プリコンパイル済みヘッダーを無効にするには、[プロジェクト] メニューの [プロパティ] をクリックします。[構成プロパティ] ノードを展開し、次に [C/C++] ノードを展開して、[プリコンパイル済みヘッダー] をクリックします。[プリコンパイル済みヘッダーの作成/使用] の横のドロップダウン リストで、[プリコンパイル済みヘッダーを使用しない] をクリックします。[OK] をクリックして、変更を保存します。プリコンパイル済みヘッダーの詳細については、「プリコンパイル済みヘッダー ファイルの作成」を参照してください。

クラス ライブラリにクラスを追加するには

  1. 新しい CLR クラス ライブラリを作成すると、ウィザードによって単純なクラスが生成されます。ヘッダー ファイルとソース ファイルの名前は、前の処理でプロジェクトに付けた名前と同じになります。この例では、「MathFuncsAssembly.h」と「MathFuncsAssembly.cpp」という名前です。

  2. MathFuncsAssembly.h 内の既存のコードを、加算、減算、乗算、除算などの一般的な数値演算を行う MyMathFuncsAssembly という名前の単純なクラスに置き換えます。コードは次のようになります。

    // MathFuncsAssembly.h
    
    using namespace System;
    
    namespace MathFuncs
    {
        public ref 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);
        };
    }
    
  3. ソース ファイルに MyMathFuncs の機能を実装します。コードは次のようになります。

    // MathFuncsAssembly.cpp
    // compile with: /clr /LD
    
    #include "MathFuncsAssembly.h"
    
    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 gcnew DivideByZeroException("b cannot be zero!");
            }
    
            return a / b;
        }
    }
    
  4. [ビルド] メニューの [ソリューションのビルド] をクリックし、クラス ライブラリをコンパイルします。これにより、他のプログラムで使用できるダイナミック リンク ライブラリ (DLL: Dynamic Link Library) が作成されます。DLL の詳細については、「DLL」を参照してください。

クラス ライブラリを参照するアプリケーションを作成するには

  1. 作成したクラス ライブラリを参照して使用するアプリケーションを作成するには、[ファイル] メニューの [新規作成] をポイントし、[プロジェクト] をクリックします。

  2. [プロジェクトの種類] ペインで、[Visual C++] の [CLR] をクリックします。これにより、共通言語ランタイムを対象とするプロジェクトが作成されます。

  3. [テンプレート] ペインの [CLR コンソール アプリケーション] をクリックします。

  4. プロジェクトに「MyExecRefsAssembly」などの名前を付け、[名前] フィールドに入力します。[ソリューション] の横のドロップダウン リストで、[ソリューションに追加] をクリックします。これにより、クラス ライブラリと同じソリューションに新しいプロジェクトが追加されます。

  5. [OK] をクリックして、プロジェクトを作成します。

  6. 既定では、新しいプロジェクトを作成する場合、それらはプリコンパイル済みヘッダーを使用するように設定されます。プリコンパイル済みヘッダーを無効にするには、[プロジェクト] メニューの [プロパティ] をクリックします。[構成プロパティ] ノードを展開し、次に [C/C++] ノードを展開して、[プリコンパイル済みヘッダー] をクリックします。[プリコンパイル済みヘッダーの作成/使用] の横のドロップダウン リストで、[プリコンパイル済みヘッダーを使用しない] をクリックします。[OK] をクリックして、変更を保存します。プリコンパイル済みヘッダーの詳細については、「プリコンパイル済みヘッダー ファイルの作成」を参照してください。

クラス ライブラリの機能をコンソール アプリケーションで使用するには

  1. 新しい CLR コンソール アプリケーションを作成すると、"Hello World" とコンソールに書き込むだけのプログラムが作成されます。ソース ファイルの名前は、前の処理でプロジェクトに付けた名前と同じになります。この例では、「MyExecRefsAssembly.cpp」という名前です。

  2. クラス ライブラリで作成された数値演算ルーチンを使用するには、それを参照する必要があります。このためには、[プロジェクト] メニューの [参照] をクリックします。[プロパティ ページ] ダイアログ ボックスで、[共通プロパティ] ノードを展開し、[参照設定] をクリックします。次に、[新しい参照の追加] ボタンをクリックします。[参照設定] ダイアログ ボックスの詳細については、「[フレームワークと参照設定] ([<プロジェクト名> プロパティ ページ] ダイアログ ボックス - [共通プロパティ])」を参照してください。

  3. [参照の追加] ダイアログ ボックスが表示されます。このダイアログ ボックスには、参照できるすべてのライブラリが表示されます。[.NET] タブでは、.NET Framework に含まれているライブラリが表示されます。[COM] タブでは、コンピュータ上のすべての COM コンポーネントが表示されます。[プロジェクト] タブでは、現在のソリューション内のすべてのプロジェクト、およびそれらに含まれるすべてのライブラリが表示されます。[プロジェクト] タブで、MathFuncsAssembly をクリックします。次に [OK] をクリックします。[参照の追加] ダイアログ ボックスの詳細については、「[参照の追加] ダイアログ ボックス」を参照してください。

    ms235638.alert_note(ja-jp,VS.90).gifメモ :

    #using <MathFuncsAssembly.dll> のように、#using ディレクティブを使用してソース ファイルからアセンブリを直接参照できます。このディレクティブの詳細については、「The #using Directive」を参照してください。

  4. これで、MyMathFuncs クラスをこのアプリケーションで使用できます。MyExecRefsAssembly.cpp で、ファイル関数の内容を次のコードに置き換えます。

    // MyExecRefsAssembly.cpp
    // compile with: /clr /FUMathFuncsAssembly.dll
    
    using namespace System;
    
    int main(array<System::String ^> ^args)
    {
        double a = 7.4;
        int b = 99;
    
        Console::WriteLine("a + b = {0}",
            MathFuncs::MyMathFuncs::Add(a, b));
        Console::WriteLine("a - b = {0}",
            MathFuncs::MyMathFuncs::Subtract(a, b));
        Console::WriteLine("a * b = {0}",
            MathFuncs::MyMathFuncs::Multiply(a, b));
        Console::WriteLine("a / b = {0}",
            MathFuncs::MyMathFuncs::Divide(a, b));
    
        return 0;
    }
    
  5. [ビルド] メニューの [ソリューションのビルド] をクリックして、実行可能ファイルをビルドします。

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

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

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

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

次の手順

前へ :スタティック ライブラリの作成と使用 (C++) | 次へ :次の学習事項 (C++)

参照

処理手順

Visual C++ ガイド ツアー

その他の技術情報

共通言語ランタイムのアセンブリ

アプリケーション ドメイン