gpt4 book ai didi

c++ - 确认注册的 COM 对象 CoCreateInstance 返回 REGDB_E_CLASSNOTREG

转载 作者:行者123 更新时间:2023-11-30 05:43:51 25 4
gpt4 key购买 nike

我有一个 ATL DLL,我正试图从 ATL Exe 中使用它。当我尝试在 DLL 中创建对象的实例时,它失败并显示错误 REGDB_E_CLASSNOTREG。我检查了注册表,可以看到对象已注册,包括 ProgID 和 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

任何建议

最佳答案

好吧,我真的觉得有点傻。问题是 CComPtr 试图在我正在共同创建的对象上调用 QueryInterface。我正在使用的接口(interface)不是由我正在创建的类实现的。似乎会有比 REGDB_E_CLASSNOTREG 更好的错误。恕我直言,像 E_NOINTERFACE 这样的返回码会更好。

CComPtr<IMyCorrectInterface> ptrMyInterface;
ptrMyInterface.CoCreateInstance(L"ProgID", nullptr, CLSCTX_ALL); // WORKS!!!

关于c++ - 确认注册的 COM 对象 CoCreateInstance 返回 REGDB_E_CLASSNOTREG,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30063006/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com