代码之家  ›  专栏  ›  技术社区  ›  Mladen Janković

ns_error_xpc_gs_returned_failure错误代码

  •  1
  • Mladen Janković  · 技术社区  · 15 年前

    我正在开发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);
    

    有人知道这个错误代码是什么意思吗?

    此错误仅在运行Vista(x86和x64)并运行FF 3.5.2(32位官方版本,即使在重新安装FF并创建新配置文件之后)的少数计算机上发生,在其他平台上也可以正常工作。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]
    

    谢谢!

    2 回复  |  直到 15 年前
        1
  •  3
  •   bsmedberg    15 年前

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

        2
  •  1
  •   sdwilsh    15 年前

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