1

我正在为 Firefox 开发扩展,它调用用 C++ 编写的 XPCOM 组件,我收到此错误:

[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(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]

谢谢!

4

2 回答 2

3

您也可能在组件注册过程中尝试调用 .getService。您不应在注册期间尝试创建任何外部组件,因为它们可能尚未注册或完全可用。

于 2009-09-03T17:45:14.677 回答
1

该错误意味着您的组件在 getService 调用期间抛出。

于 2009-09-02T18:59:26.863 回答