2016-04-20 16 views
-2

C++/CLIでは、クラス内のいくつかのインスタンスを以下のように定義しました。C++/CLIクラスで定義されたインスタンスをC#で使用できますか?

C#側では、次のようにa_Instanceで関数を使用しようとすると、Bインスタンスを作成しています。

private B b_instance = new B(); 

私は管理されたC++クラスでインスタンスの作成を取得してその関数を使用することは可能ですか?

+0

あなたはそれが不可能だと思いますか?何か問題があったのですか、何かエラーが発生しましたか? – nvoigt

答えて

1

ここでは、これを行う方法の例を示します。まず、管理クラスを定義します(refおよびpublicとしてマークします)。これはC++/CLIプロジェクトでコンパイルする必要があります。

その後
// CCLI.h 
#pragma once 
using namespace System; 
namespace CCLI { 

    public ref class A 
    { 
    public: 
     int test(){return 0;} 
    }; 

    public ref class B 
    { 
    public: 
     static A^ a_Instance = gcnew A(); 
    }; 
} 

は、C#プロジェクトへの参照としてアセンブリを追加し、あなたがこの方法の要素を使用することがあります。

namespace CSharp 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      CCLI.B b_instance = new CCLI.B(); 

      CCLI.B.a_Instance.test(); 
     } 
    } 
} 

二つ詳細:C++/CLIで使用されているのインスタンスがあります静的なフィールドを介して、静的に参照する必要があります。また、特定のアーキテクチャ(32ビットまたは64ビット)でC++/CLIをコンパイルする場合は、それを使用するドットネットアセンブリが適切なアーキテクチャ(x86またはx64)で起動されるようにします。

関連する問題