我有一个接口的ATL / COM实现,我需要在我的主代码中实例化并传递给另一个COM对象。这个实现是用C ++编写的。
从我的主要C ++代码,我想直接访问该对象(而不是通过COM端口),并直接访问类成员和方法。
我认为要走的路是在ATL / COM类中添加DECLARE_NO_REGISTRY();然后调用myCOMClass:CreateObject()而不是CoCreateInstance;但我不知道如何使用它(并没有找到任何例子)。
我尝试了几种组合但没有成功。
在我的主要代码中:
//I added this line to call the lib directly
#include "comClass\StdAfx.h"
#include "comClass\comClass_i.c"
#include "comClass\comClass.h"
//I removed this line to bypass COM
//#import "comClass\comClass.dll"
//What can I put here to replace this block, bypass COM
//and being able to access class members??
CoInitialize(NULL);
comClassInterface *myObject = NULL;
HRESULT hr = ::CoCreateInstance(__uuidof(comClass),
NULL,
CLSCTX_INPROC_SERVER,
__uuidof(comClassInterface),
(void**)&myObject);
答案 0 :(得分:0)
或多或少"标准" wat直接创建COM对象:
CComObject<comClass> *myObject;
CComObject<comClass>::CreateInstance(&myObject);
这基本上就是......你也可以做一下#34;新的comClass&#34;如果类不是抽象的,通常就是使用ATL的情况。