已确认的已注册com对象cocreateinstance返回regdb_e_classnotreg
Confirmed Registered COM Object CoCreateInstance returning REGDB_E_CLASSNOTREG
我有一个我试图从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!!!
相关文章:
- 没有找到相关文章