首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mozilla XPCOM未注册

Mozilla XPCOM未注册
EN

Stack Overflow用户
提问于 2012-01-29 23:04:51
回答 2查看 413关注 0票数 1

我正在尝试为Firefox构建一个扩展。此扩展使用XPCOM组件( C++动态链接库)。我正在编译DLL,编译正常。

下一步是在我的扩展中使用Javascript中的组件。我添加了从c++文件注册组件的代码:

代码语言:javascript
复制
static const mozilla::Module::CategoryEntry kSampleCategories[] = {
    { JAVASCRIPT_GLOBAL_PROPERTY_CATEGORY, "greenfox", NS_SAMPLE_CONTRACTID },
};

在我的清单中,我声明XPCOM:

代码语言:javascript
复制
component {03A6D0B4-22B9-11DF-B844-20D556D89593} components/GreenCodeLabFox.dll

问题是,当我尝试使用JS中的组件时,它似乎没有注册:

代码语言:javascript
复制
    try {
        greenfox;
        return true;
    } catch( e ) {
        alert( e );
        return false;
    }   

这会给我一个警告错误:

代码语言:javascript
复制
ReferenceError: greenfox is not defined

在error console中,我没有消息。

如果没有错误消息,我该如何调试?顺便说一下,我的javascript.options.showInConsole设置为true。

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-30 00:48:23

根据https://developer.mozilla.org/en/XPCOM/XPCOM_changes_in_Gecko_2.0,您必须使用binary-component指令来注册二进制组件。

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

如果组件仍然不能工作,我会尝试通过Components.classescontract id从错误控制台获取它-这将显示问题是组件注册还是全局属性部分。

尽管https://developer.mozilla.org/en/Troubleshooting_XPCOM_components_registrationa bit dated,但它可能对故障排除很有用。

票数 2
EN

Stack Overflow用户

发布于 2015-09-05 07:53:38

也许是一个更新,因为Firefox41在发布版本中不再支持使用二进制组件进行扩展,但可以使用MOZ_BINARY_EXTENSIONS进行自定义构建

https://blog.mozilla.org/addons/2015/05/04/dropping-support-for-binary-components/

https://github.com/mozilla/gecko-dev/blob/master/xpcom/components/ManifestParser.cpp

您可能会看到如下错误

[JavaScript Warning: "Only application manifests may use the 'binary-component' directive." {file: "..." line: ..}]

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9054143

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档