-1

この 2 つの Q を確認しました。

C# から C++ コードを呼び出すことは可能ですか?

アンマネージ C++ を C++/CLI でラップする - 適切なアプローチ

私も についていくつか読んだことがありますC++/CLIが、正直なところかなり混乱しています。

プロジェクトがVC++あり、それをプロジェクトに変換したいと考えていC#ます。

私の Q は次のとおりです。

  1. C++/CLIこの目的のために使用する必要がありますか?どのように使用しますか?
  2. 新しいプロジェクトで元のプロジェクトのメソッドごとにラッパー クラスを実装する必要がありますか?そうでない場合はどうすればよいですか?
4

1 に答える 1

1

1) はい、C++/CLI が必要です

2) いいえ、メソッドごとにラッパー クラスを作成する必要はありません。C++ (ネイティブ) クラスごとにラッパー クラスを 1 つだけ作成する必要があります。インターフェイスを宣言するのと似ています。

アンマネージ C++ を C++/CLI でラップする - 適切なアプローチ

はメソッドが 1 つだけの例ですが、C++ で記述された NativeType 型のクラスに別のメソッドがある場合、たとえば次のようになります。

void Method2()

ちょうど同じクラスだった

   void ManagedMethod2()
      { NativePtr->Method2(); } 

したがって、ラッパー クラス全体は次のようになります。 #include "NativeType.h"

public ref class ManagedType
{
     NativeType*   NativePtr; 

public:
     ManagedType() : NativePtr(new NativeType()) {}
     ~ManagedType() { delete NativePtr; }

     void ManagedMethod()
      { NativePtr->NativeMethod(); } 

     void ManagedMethod2()
      { NativePtr->Method2(); } 
}; 

常に上記のリンクから C# で method2 を呼び出します。

mt.ManagedMethod2();
于 2013-11-08T15:45:20.597 に答える