3

サードパーティの dll に C++ クラスがあります。

Assembly.LoadFrom() を呼び出すと、モジュールにマニフェストが含まれていないため、VS は未処理の例外をスローします。

DllImport を使用してグローバル関数を呼び出し、特定のクラスのインスタンスを取得できます。

次に、そのメンバー関数の 1 つを呼び出すにはどうすればよいですか?

4

2 に答える 2

2

C++ 関数を公開する C++/CLI を使用してラッパー DLL を作成する

例えば:

//class in the 3rd party dll
class NativeClass
{
    public:
    int NativeMethod(int a)
    {
        return 1;
    }   
};

//wrapper for the NativeClass
class ref RefClass
{
    NativeClass * m_pNative;

    public:
    RefClass():m_pNative(NULL)
    {
        m_pNative = new NativeClass();
    }

    int WrapperForNativeMethod(int a)
    {
        return m_pNative->NativeMethod(a);
    }

    ~RefClass()
    {
        this->!RefClass();
    }

    //Finalizer
    !RefClass()
    {
        delete m_pNative;
        m_pNative = NULL;
    }
};
于 2012-05-16T16:09:25.630 に答える