1

C++ で記述された XPCOM コンポーネントを呼び出す Firefox 用の拡張機能を開発していますが、次のエラーが発生します。

[Exception... "Component returned failure code: 0x80570016
(NS_ERROR_XPC_GS_RETURNED_FAILURE) [nsIJSCID.getService]"  nsresult: "0x80570016
(NS_ERROR_XPC_GS_RETURNED_FAILURE)"  location: "JS frame :: 
chrome://testtest/content/mytest.js :: loadTestPage :: line 128"  data: no]

Javaスクリプトからこのコードを実行しようとすると:

cid = '@myCompany.com/MyComponent;1';
obj = Components.classes[cid].getService(Components.interfaces.IMyComponent);

このエラーコードの意味を知っている人はいますか?

このエラーは、FF 3.5.2 (FF を再インストールして新しいプロファイルを作成した後でも、32 ビットの公式ビルド) を実行している Vista (x86 と x64 の両方) を実行している少数のマシンでのみ発生し、他のプラットフォームでは動作しています。XPCOM コンポーネントは Visual C++ 2008 (sp1) でコンパイルされています。

compreg.dat と xpti.dat を削除しようとしましたが、うまくいきません。また、新しいプロファイルを作成して、拡張機能を再度インストールしようとしましたが、それでも同じエラーが発生します。

私は、Firefox が私の XPCOM コンポーネントを正常にロードし、そのコンポーネントが機能していることを知っています。これは、javascript で記述された別のコンポーネントからアクセスして使用できるためです。

エラーコンソールからの評価も機能します。

表現:

Components.classes['@myCompany.com/MyComponent;1'].getService(
    Components.interfaces.IMyComponent);

戻り値:

[xpconnect wrapped IMyComponent]

ありがとう!

4

2 に答える 2

3

コンポーネントの登録中に .getService を呼び出そうとしている可能性もあります。登録中に外部コンポーネントを作成しようとしないでください。登録されていないか、まだ完全に利用できない可能性があるためです。

于 2009-09-03T17:45:14.677 に答える
1

エラーは、コンポーネントがgetService呼び出し中にスローしたことを意味します。

于 2009-09-02T18:59:26.863 に答える