已注册COM对象的HRESULT:0x80040154

已注册COM对象的HRESULT:0x80040154,com,atl,Com,Atl,我在调用COM对象时遇到一些问题 szProgID = Imctrl.Section HRESULT hr = CLSIDFromProgID(szProgID, &clsid); 执行后,hr=S_OK,clsid=“clsid_Section Class” 但当我尝试创建对象时,CoCreateInstance返回错误:“类未注册”。尽管注册表中存在“Imctrl.Section” hr = ::CoCreateInstance(clsid, pUnkOuter, dwClsCon

我在调用COM对象时遇到一些问题

szProgID = Imctrl.Section
HRESULT hr = CLSIDFromProgID(szProgID, &clsid);
执行后,hr=S_OK,clsid=“clsid_Section Class”
但当我尝试创建对象时,CoCreateInstance返回错误:“类未注册”。尽管注册表中存在“Imctrl.Section”

hr = ::CoCreateInstance(clsid, pUnkOuter, dwClsContext, __uuidof(T), (void**)&p);

此dll中的其他类别出现相同错误。

问题与32位与64位无关

使用实用软件“depends.exe”我发现该DLL依赖于某些第三方DLL,不允许访问该对象。

可能是32位与64位的问题?COM服务器和COM客户端必须使用相同的位(通常)
Imctrl。注册表中的节
仅映射到CLSID,然后CLSID映射到实际的服务器实现,然后它必须存在。总而言之,这要么是您试图实例化错误的东西时遇到的问题,要么是服务器不仅注册/可用(包括32/64可能原因)。