5

次のエラーが表示されます:
CLSID {6C9E80E3-B780-4361-A693-5E5C6BDC83A9} のコンポーネントの COM クラス ファクトリを取得できませんでした: 次のエラーが原因です: 80040154。

Dim smgrGlobal As QBSessionManager
smgrGlobal = New QBSessionManagerClass()

2行目はエラーです。
このエラーは、QB2013 と QBFC12 でのみ発生します。これは、以前のバージョンでは発生しません。
私が知る限り、このエラーはアプリケーションが x86 用にコンパイルされていないことが原因です (代わりに「任意の CPU」が使用された場合)。ただし、「任意の CPU」ではなく x86 用にコンパイルするようにアプリケーションを設定しましたが、まだこのエラーを受け取ります。

4

3 に答える 3

6

COM エラー 0x80040154 は文字通り「クラスが登録されていません」を意味します。参照されている「クラス」は、インスタンス化しようとしているコンポーネントの COM クラスです。このエラーが発生する理由は次のとおりです。

  1. ご指摘のとおり、「x86」ではなく「x64」または「任意の CPU」でアプリをビルドすると、この問題が発生します。これは、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 をインストールしてください。 Intuit\IDN\QBSDK13.0\tools\installers

Windows 10 を搭載した 2 つの同一の Surface Pro 3 があります。1 つのシステムでコードの同一のコピーを使用すると、コンパイルして正常に実行されました。もう一方では、恐ろしいクラスエラーが発生します。多くの検索を行って解決策を見つけられなかった後、暗闇の中で突き刺すだけで、この特定の刺し傷が問題を解決しました。

于 2015-09-26T02:53:15.640 に答える
0

QB POS 2013 でも同様の問題があります。

管理者の資格情報を使用してアプリケーションを実行すると、このエラーが発生します。現在のユーザーでアプリケーションを実行すると、すべて問題ありません。このエラーの原因は、QBFC インストーラー (またはマージ モジュール) の問題である可能性があります。どちらのインストーラーも、ローカル マシン ブランチ (HKLM) ではなく、現在のユーザーのレジストリ ブランチ (HKCU) に COM コンポーネント クラス ID を書き込みます。そのため、現在のユーザー (管理者または他のユーザー) 以外でアプリを実行すると、アプリケーションは COM コンポーネント ID を見つけることができません。

また、通常の QB XML (Interop.QBPOSXMLRPLIB) が正しくインストールされ、すべてのユーザーで正常に実行されます。

ここで同様の議論を参照してください - How can A COM component be registered halfway? .

于 2013-08-27T12:34:28.180 に答える