У меня есть некоторые проблемы с вызовом COM-объекта.
HRESULT: 0x80040154 для зарегистрированного объекта COM
szProgID = Imctrl.Section
HRESULT hr = CLSIDFromProgID(szProgID, &clsid);
После выполнения, ч = S_OK, CLSID = "CLSID_Section класс".
Но когда я пытаюсь создать объект, CoCreateInstance возвратил ошибку: «Класс не зарегистрирован». Хотя «Imctr.Section» существует в реестре.
hr = ::CoCreateInstance(clsid, pUnkOuter, dwClsContext, __uuidof(T), (void**)&p);
Такая же ошибка для других кладок из этой DLL.
Возможно, 32-разрядная версия 64-разрядной версии? COM-сервер и COM-клиент должны использовать одну и ту же битту (в общем) –
'Imctrl.Section' в реестре только для карт CLSID, тогда CLSID сопоставляет фактическую реализацию сервера, а затем он должен существовать вообще. В целом, это либо проблема с вашей стороны, пытающаяся создать неверную вещь, либо сервер не просто зарегистрирован/доступен (включая вероятную причину 32/64). –