私はC++でXPCOMコンポーネントWRITENを呼び出し、私はこのエラーを取得するFirefox用拡張機能開発しています:私はJavaスクリプトからこのコードを実行しようとするとNS_ERROR_XPC_GS_RETURNED_FAILUREエラーコード
[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]
を:
cid = '@myCompany.com/MyComponent;1';
obj = Components.classes[cid].getService(Components.interfaces.IMyComponent);
誰でもこのエラーコードが何を意味するのか知っていますか?
このエラーは、動作している他のプラットフォーム上で、FF 3.5.2(公式ビルド32ビット、FFを再インストールして新しいプロファイルを作成した後でも)を実行している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]
ありがとう!
C++ XPCOM compontenは、別のJSコンポーネントからも呼び出され、機能しますが、拡張からは失敗し続けます。これは、Vista OSとFF 3.5.2を実行するいくつかのマシンでのみ発生します(FFが再インストールされ、新しいプロファイルでも)。また、私は評価しようとしました:Components.classes ['@ myCompany.com/MyComponent;1'].getService(Components.interfaces.IMyComponent)エラーコンソールからの式とそれが動作します(エラーコンソールのメッセージは[xpconnect wrapped IMyComponent]) おかげさまで –
これは、再帰的なサービスの負荷に対しても発生します。コンポーネント上でgetServiceを再帰的に呼び出す可能性があります。 – sdwilsh