[英]Using COM Interop Objects from C++
我有一個為COM Interop注冊的.NET庫,我成功地使用了VB6代碼(因此,它已正確注冊,這不是問題) 。
會發生什么是我試圖通過C ++代碼(一個MFC ActiveX控件)使用同一個庫,我甚至無法實例化對象(是的,它有一個無參數構造函數) 。
想象一下,命名空間是Foo ,類的名稱是Bar 。 我如何實例化這樣的對象? 我正在嘗試這個:
在.h文件中:
Foo::Bar *obj;
在.cpp文件上,在ActiveX控件的構造函數上:
obj = new Foo::Bar();
而且我收到以下錯誤:
基本上我的問題是:如何使用C ++代碼中的.NET COM Interop對象?
CComObject<Foo::Bar>* obj;
HRESULT hr = CComObject<Foo::Bar>::CreateInstance(&obj);
//check hr
或者,如果您想使用Bar
實現的名為IBar
的接口:
CComPtr<Foo::IBar> pIObj;
HRESULT hr = pIObj.CreateInstance(__uuidof(Foo::Bar));
//check hr
正如漢斯在評論中所說,你將要使用#import指令來導入類型庫。
在C ++中,首先應該初始化COM,然后通過UUID獲取COM對象,您可以使用此COM對象的功能,在完成后,取消初始化COM。 所以代碼將是這樣的:
CoInitialize(NULL);
IMyClassPtr myClass = IMyClassPtr(_uuid(myClass));
if (myClass != NULL)
{
myClass->DoSomething();
}
CoUnitialize();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.