我是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
功能?
答案 0 :(得分:4)
您必须传递要实例化的类的UUID,而不是__uuidof(IMessageBox)
,而不是您之前使用regsrv32
注册的类。
答案 1 :(得分:2)
嗯,错误告诉你问题是什么。您请求的类未在COM注册表中注册。可能是您注册的类的IID不是您要求的类。另一种常见的故障模式是您注册了32位DLL,并且您的调用进程是64位。反之亦然。