2010-05-24 39 views
0

我有一些接口暴露一些API的如何從COM服務器中的調用接口API

COM類中的一個COM服務器看起來就像下面

class ATL_NO_VTABLE CTask : 
    public CComObjectRootEx<CComSingleThreadModel>, 
    public CComCoClass<CTask, &CLSID_Task>, 
    public ITask 
{ 

public: 
STDMETHOD (Task)(); 
STDMETHOD (ABC)(); 
... 
} 

現在這個COM服務器還包含一個多類XYZ

ABC API需要調用XYZ功能

STDMETHODIMP ABC() 
{ 
    XYZ xyz; 
    xyz.dosomething(); 
} 

DoSomething的˚F需要調用com服務器的任務功能,如下所示

class XYZ 
     { 
     public: 
     void dosomething() 
     { 
     // need to call Task function 
     } 
     }; 

這怎麼辦?我需要CoCreateInstance ITask嗎?

我試着創建CTask taskl;在dosomething,但它給了一些錯誤。

+0

「給出了一些錯誤」並不能幫助我們來幫助你。 – 2010-05-24 11:27:43

+0

無法創建抽象類CTask的實例。 方法QueryInterface,AddRef,發佈未實現 – anand 2010-05-24 11:30:53

回答

0

CTask是不可創建的,因爲它不實現IUnknown方法。您需要使用用於充當COM對象,例如CComObjectATL的一類:

CComPtr<ITask> newTask = new CComObject<CTask>();