サードパーティの dll に C++ クラスがあります。
Assembly.LoadFrom() を呼び出すと、モジュールにマニフェストが含まれていないため、VS は未処理の例外をスローします。
DllImport を使用してグローバル関数を呼び出し、特定のクラスのインスタンスを取得できます。
次に、そのメンバー関数の 1 つを呼び出すにはどうすればよいですか?
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;
}
};