已确认的已注册com对象cocreateinstance返回regdb_e_classnotreg

Confirmed Registered COM Object CoCreateInstance returning REGDB_E_CLASSNOTREG

本文关键字:regdb classnotreg 返回 对象 确认 注册 com cocreateinstance      更新时间:2023-10-16

我有一个我试图从ATL EXE消耗的ATL DLL。当我尝试在DLL中创建对象的实例时,它会使用错误regdb_e_classnotreg失败。我已经检查了注册表,并且可以看到对象已注册,均和clsid。

CComPtr<IMyInterface> ptrMyInterface;
ptrMyInterface.CoCreateInstance(L"ProgID", nullptr, CLSCTX_ALL); // Fails
CLSID myClsid;
CLSIDFromString(L"{MyCLSID}"), &myClsid);  // Correctly looks up the CLSID
ptrMyInterface.CoCreateInstance(myClsid, nullptr, CLSCTX_ALL); // Also fails

任何建议

好吧,我真的很傻。问题是COMPTR试图在我所掌握的对象上调用查询方面。我正在使用的界面并未由我创建的类实现。看来比regdb_e_classnotreg更好的错误。像e_nointerface之类的东西将是更好的返回代码IMHO。

CComPtr<IMyCorrectInterface> ptrMyInterface;
ptrMyInterface.CoCreateInstance(L"ProgID", nullptr, CLSCTX_ALL); // WORKS!!!
相关文章:
  • 没有找到相关文章