5

我收到此错误:
由于以下错误,检索具有 CLSID {6C9E80E3-B780-4361-A693-5E5C6BDC83A9} 的组件的 COM 类工厂失败:80040154。

Dim smgrGlobal As QBSessionManager
smgrGlobal = New QBSessionManagerClass()

第二行是错误的。
我仅在使用 QB2013 和 QBFC12 时收到此错误。任何以前的版本都不会发生这种情况。
据我所知,此错误是由于未针对 x86 编译的应用程序(如果使用“任何 CPU”代替。)但是我已将应用程序设置为针对 x86 而不是“任何 CPU”进行编译,我仍然收到此错误。

4

3 回答 3

6

COM 错误 0x80040154 字面意思是“类未注册”。所引用的“类”是您尝试实例化的组件的 COM 类。以下是您可能会收到此错误的原因:

  1. 正如您所指出的,如果您使用“x64”或“Any CPU”而不是“x86”构建您的应用程序,您将看到此问题。这是因为 32 位进程使用与 64 位进程不同的注册表配置单元,而注册表是保存有关 COM 类注册信息的地方。
  2. 您尚未在当前本地机器上正确安装 QBFC。无论您用于开发应用程序的 QBFC 版本是什么,都必须在运行应用程序的每台计算机上安装相同版本的 QBFC。如果你不这样做,你可能会很幸运,因为其他人安装了正确的版本,但最终你会看到这个问题。让我强调一下:QBFC 默认没有安装 QuickBooks。
  3. (不太可能但可能)QBFC 的 COM 注册信息不知何故已损坏。这个问题可以通过重新安装正确版本的 QBFC 来解决。
于 2013-02-28T21:03:57.273 回答
1

如果更改为 X86 不起作用,请尝试以下操作:我使用的是版本 13,也可能适用于其他版本 安装 QBFC13_0Installer.exe 确保先安装 SDK 在我的系统上,它位于:C:\Program Files(x86)\ Intuit\IDN\QBSDK13.0\tools\installers

我有两个相同的 Surface Pro 3 和 Windows 10。在一个系统上使用相同的代码副本编译并运行得很好。另一方面,我会遇到可怕的类错误。经过大量搜索并没有找到解决方案,我开始只是在黑暗中刺伤,这个特殊的刺伤解决了这个问题。

于 2015-09-26T02:53:15.640 回答
0

QB POS 2013 也有类似的问题。

使用管理员凭据运行应用程序时出现此错误 - 当我在当前用户下运行应用程序时一切正常。此错误的原因可能是 QBFC 安装程序(或合并模块)中的问题 - 两个安装程序都将 COM 组件类 ID 写入当前用户 (HKCU) 的注册表分支而不是本地计算机分支 (HKLM)。因此,当您不在当前用户(管理员或其他用户)下运行您的应用程序时,应用程序无法找到 COM 组件 ID。

此外,常规 QB XML (Interop.QBPOSXMLRPLIB) 已正确安装并在所有用户下成功运行。

请在此处查看类似的讨论 - 如何中途注册 COM 组件?.

于 2013-08-27T12:34:28.180 回答