1

C++/CLI でネイティブ ライブラリをラップしたいと考えています。プリミティブ型で動作します。ただし、次の場合はより複雑です。

interface ISampleInterface
{
    void SampleMethod();
}

public ref class NativeClassWrapper {
    NativeClass* m_nativeClass;

public:
    NativeClassWrapper() { m_nativeClass = new NativeClass(); }
    ~NativeClassWrapper() { delete m_nativeClass; }
    void Method(ISampleInterface ^i) {
        ???
        m_nativeClass->Method(i);
    }
};

これをラップする方法は?ネイティブ コード C++ は ISampleInterface 型を認識していないため... (仮想クラスと同じ質問)

ありがとうございます。

4

2 に答える 2

2

ネイティブ クラスが .NET コードにコールバックする必要がある場合は、gcrootテンプレートを使用する必要があります。これにより、マネージド オブジェクトをアンマネージド クラスに格納できます。このアンマネージ クラスでは、ネイティブの「コールバック」を使用し、`gcroot' に格納されたメンバーを使用してマネージ コード (ISampleInterface) にコールバックできます。

以下も参照してください。

于 2013-08-01T13:03:22.810 に答える