COM IUnknown ベースのオブジェクトへのポインターを返すアンマネージ C ルーチンをエクスポートするライブラリがあります。DLL は登録されておらず、サーバーではありません。C# の COM 型を使用したいと考えています。
COM 型の C# インターフェイスは既に作成しています。LoadLibrary() と GetProcAddress() の呼び出しに相当する C# は何ですか? GetProcAddress() の結果を呼び出してから、それを呼び出して COM インターフェイス ポインターをロードするにはどうすればよいでしょうか?
これは、私が何を求めているかを示す C++ のスニペットです。
// Assume I have previously declared IMyType
HANDLE mylib = ::LoadLibrary("myfakecom.dll");
IUnknown* (*GetterFunc) getter;
getter = (GetterFunc)::GetProcAddress(mylib, "GetFactory");
IUnknown *unk = getter();
IMyType *mytype = unk->QueryInterface(IID_MYTYPE);
私の直感は「C++/CLI で実行してください」と言いますが、ジェネリック型に対してこれを行う方法と、[Guid] 属性を使用して宣言するマネージャー ポインター型に未加工の IUnknown ポインターを強制する方法がわかりません。管理されたインターフェイスで。