Com 由于以下错误,IClassFactory失败:800a0153

Com 由于以下错误,IClassFactory失败:800a0153,com,com-interop,Com,Com Interop,我试图引用com组件,但它抛出了以下错误 由于以下错误,从IClassFactory创建CLSID为{xxx}的COM组件实例失败:800a0153 具体地说,当我尝试实例化一个对象时会抛出错误。我查过了 正在为x86处理器构建的项目 com对象是使用regsvr32注册的,并且在注册表中可用 我还可以在对象浏览器中看到方法,因此我知道.net正在查找它 有没有关于我遗漏了什么的想法?当我不得不做很多COM工作时,我从这些人那里用了很多COM Explorer: 去年我不得不安装它来调试Off

我试图引用com组件,但它抛出了以下错误

由于以下错误,从IClassFactory创建CLSID为{xxx}的COM组件实例失败:800a0153

具体地说,当我尝试实例化一个对象时会抛出错误。我查过了

  • 正在为x86处理器构建的项目
  • com对象是使用regsvr32注册的,并且在注册表中可用
  • 我还可以在对象浏览器中看到方法,因此我知道.net正在查找它


    有没有关于我遗漏了什么的想法?

    当我不得不做很多COM工作时,我从这些人那里用了很多COM Explorer:

    去年我不得不安装它来调试Office插件的一个奇怪的COM注册问题


    另外,我与这些家伙没有任何关系(而且看起来公司可能会被烤了)。

    这是一个特定于组件的错误代码。如果您没有说明代码含义的文档,则需要供应商的支持。

    如我对Hans回答的评论所述,此错误代码是FACILITY_控件,它应该与OLE/ActiveX控件相关,并且有一个错误代码,该错误代码位于OleCtl.h中定义的标准范围内(即Microsoft使用),但是没有在Win32头文件中记录,因此可能是Microsoft产品(如Visual Basic)的内部文件

    您能告诉我们您尝试使用的COM组件的其他信息吗


    如果COM组件是使用Visual Basic编写的,我认为您看到的可能相当于运行时错误339,如果Visual Basic用户尝试引用缺少某些依赖项的OCX控件,则会看到该错误。您可以使用
    Depends.EXE
    查看COM服务器的DLL/EXE的依赖项,并查看它们是否都存在于您的计算机上。

    FYI 0x800a0153=VB_E_TERRREGBADFILE根据err.EXE,尽管我找不到更多信息。您在工具中查看了什么?我看到dll注册等,如果我没有记错,有一个“查找问题”或类似的菜单选项。我已经有一段时间没有使用这个工具了,所以我对细节有点模糊。你确定吗?设备代码为设备控制,但错误代码似乎在标准范围内,而不是OLE定义的自定义范围内。这难道不意味着这是微软定义的(但不幸的是没有记录的)错误吗?@Chris-是的,我敢肯定。它还包括自动化错误,SCODE是应用程序的内部错误代码。您通常可以获取IErrorInfo来获取描述,但OP甚至在获取接口指针之前就已经获得了描述。GetErrorInfo()可能仍然有效。我已经联系了供应商,让我们看看会发生什么…当我了解更多信息时会更新。供应商向我发送了一组新的有效文件,因此将此标记为答案。我相信它是用VB6编写的,但尚未与供应商联系,以获得该问题和相关问题的答案。我已经使用COM explorer检查是否缺少任何依赖项,它说没有任何依赖项错误…将尝试使用depends.exe并返回给您我使用depends.exe检查了一下,它显示了-2个缺少的依赖项gpsvc.dll、ieshims.dll-2个红色的依赖项comctl32.dll和ieframe.dll。然而,我确实在我的机器上看到了所有这些。我想你已经发现了你的问题。当您尝试加载COM服务器时,一定有一些版本不一致导致COM服务器失败。欢迎回到地狱,“我们也没有摆脱它”[马洛1604]