簡體   English   中英

使用C ++中的COM Interop對象

[英]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();

而且我收到以下錯誤:

  • “不允許使用不完整的類型”»;
  • «錯誤C2027:使用未定義類型'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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM