我是 COM dll 的新手。我有描述方法的 dll 和 .tld 文件和文档,由 dll 公开的 classId。我尝试了使用 VS 2008 独立项目的以下程序,并且能够初始化并成功调用这些方法。但是,当我放入 MFC ActiveX 控件项目(特定按钮单击)时,以下代码无法正常工作并崩溃。调试时发现“comip.h - 本机 C++ 编译器 COM 支持 - COM 接口指针头”中的 m_pInterface 为空。
有人能告诉我为什么吗?为了从 MFC ActiveX 项目中调用,我需要在以下代码中添加/修改。
HRESULT hResult = CoInitialize(NULL);
CLSID ClassID;
if(SUCCEEDED(CLSIDFromProgID(OLESTR("WorldClass.AssetManager.1"), &ClassID)))
{
IDispatch *pDispatch;
if(SUCCEEDED(CoCreateInstance(ClassID, NULL, CLSCTX_INPROC_SERVER,
IID_IDispatch, (void **)&pDispatch)))
{
//call dll methods here
}
}
CoUnInitialize();