我有一个com服务器,其中一些接口暴露了一些API
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函数需要调用com服务器任务函数,如下所示
class XYZ
{
public:
void dosomething()
{
// need to call Task function
}
};
如何做到这一点?我是否需要CoCreateInstance ITask in dosomething?
我尝试创建CTask taskl;在dosomething但它给了一些错误。
答案 0 :(得分:0)
类CTask
不可创建,因为它不实现IUnknown
方法。您需要使用一个用作COM对象的ATL
类,例如CComObject
:
CComPtr<ITask> newTask = new CComObject<CTask>();