0

我是 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();
4

0 回答 0