2

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

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

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

4

2 回答 2

4

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

于 2013-07-08T11:43:13.320 回答
2

好吧,错误告诉你问题出在哪里。您请求的类未在 COM 注册表中注册。可能是您注册的班级 IID 不是您要求的班级。另一种常见的故障模式是您注册了一个 32 位的 DLL,而您的调用进程是 64 位的。或相反亦然。

于 2013-07-08T11:44:04.153 回答