Firefox Mozilla XPCOM未注册

Firefox Mozilla XPCOM未注册,firefox,xpcom,xpi,Firefox,Xpcom,Xpi,我正在尝试为Firefox构建一个扩展。此扩展使用XPCOM组件(C++ + DLL)。我正在编译DLL,编译没问题 下一步是使用扩展中的Javascript组件。在C++文件中添加了登记我的组件的代码: static const mozilla::Module::CategoryEntry kSampleCategories[] = { { JAVASCRIPT_GLOBAL_PROPERTY_CATEGORY, "greenfox", NS_SAMPLE_CONTRACTID },

我正在尝试为Firefox构建一个扩展。此扩展使用XPCOM组件(C++ + DLL)。我正在编译DLL,编译没问题

下一步是使用扩展中的Javascript组件。在C++文件中添加了登记我的组件的代码:

static const mozilla::Module::CategoryEntry kSampleCategories[] = {
    { JAVASCRIPT_GLOBAL_PROPERTY_CATEGORY, "greenfox", NS_SAMPLE_CONTRACTID },
};
在我的清单中,我声明XPCOM:

component {03A6D0B4-22B9-11DF-B844-20D556D89593} components/GreenCodeLabFox.dll
问题是,当我尝试在JS中使用该组件时,它似乎没有注册:

    try {
        greenfox;
        return true;
    } catch( e ) {
        alert( e );
        return false;
    }   
这给了我一个警告错误:

ReferenceError: greenfox is not defined
在错误控制台中,我没有消息

如果没有错误消息,我将如何调试它?顺便说一下,my javascript.options.showincole设置为true

谢谢

根据,必须使用
二进制组件
指令来注册二进制组件

该页面还链接到一个示例;您只发布了注册所需的部分代码

如果组件仍然无法工作,我会尝试通过错误控制台中的Components.classes[contract id]获取它-这将显示问题是与组件注册有关还是仅与全局属性部分有关


可能有助于故障排除,尽管它可能是一个更新,因为Firefox 41在发布版本中不再支持使用二进制组件进行扩展,但可以用于使用MOZ_binary_扩展的自定义版本

您可能会看到类似

[JavaScript警告:“只有应用程序清单可以使用‘二进制组件’指令。”{file:“…”行:…}]

谢谢Nickolay,这确实是个问题。这是一个新的“功能”。最初的问题是关于更旧的版本。的确,这个问题最初是在早期版本中提出的,但是这个问题在FF40之前仍然是相关的,并且是在搜索试图识别FF41的问题时提出的。