如何在c ++中使用CoCreateInstance

时间:2013-07-08 11:39:33

标签: c++ com

我是COM初学者。我有一个DLL文件,我使用regsvr32命令注册。在COM客户端中,我尝试使用CoCreateInstance函数,但它不起作用。这是我的代码:

IMessageBox *pBox;        
hr = CoCreateInstance(
          __uuidof(IMessageBox),
          NULL,
          CLSCTX_INPROC_SERVER,
          IID_IUnknown,
          (void **)&pBox
     );

IMessageBox是我的DLL文件中定义的接口。它实现了IDispatch接口。 hr的结果显示错误REGDB_E_CLASSNOTREG。如何使用CoCreateInstance功能?

2 个答案:

答案 0 :(得分:4)

您必须传递要实例化的类的UUID,而不是__uuidof(IMessageBox),而不是您之前使用regsrv32注册的类。

答案 1 :(得分:2)

嗯,错误告诉你问题是什么。您请求的类未在COM注册表中注册。可能是您注册的类的IID不是您要求的类。另一种常见的故障模式是您注册了32位DLL,并且您的调用进程是64位。反之亦然。