我有一個庫,用於導出一個非託管C例程,該例程返回指向基於COM IUnknown對象的指針。 DLL未註冊,並且不是服務器。我想使用C#中的COM類型。從非託管代碼獲取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做吧」,但我不確定我會怎麼做這對於任何泛型類型,以及如何將原始IUnknown指針強制轉換爲我將在託管接口上使用[Guid]屬性聲明的管理器指針類型。
你應該提出一個新問題,而不是試圖重複使用這個問題來跟進。新問題意味着新的眼睛。 – 2010-01-31 20:27:32