`

Mozilla XPCOM组件开发常见错误解决方法

阅读更多

最近做Firefox的开发,一直在用javascript写XPCOM组件,javascript这个东东来写XPCOM非常痛苦,有一点错误都无法注册成功,许多时候基本靠肉眼一个单词一个单词的找,当然也有一些技巧。Firefox开发最常用的工具有firebug,javascript Debug和XPCOMViewer,使用XPCOMViewer来查看已注册的组件。

常见的错误:

一、死活注册不上:

注释掉其他方法和成员变量,只保留QueryInterface方法,这样基本都会注册成功了,一旦注册成功,取消掉注释,就可以使用javascript Debug来调试了。

二、查看XPCOM Viewer(点击要找的XPCOM展开树)发现该XPCOM没有实现指定的接口或者莫名其妙的实现了没有指定的接口:

没有实现接口: 一般可能idl的接口没有实现nsISupports导致

实现了没有指定的接口:一班可能是copy别的代码,uuid重复导致

三、Cc["@company.name;1"].getService(Ci.interfaceName)或Cc["@company.name;1"].createInstance(Ci.interfaceName)出现错误,这里的Cc(Components.classes)Ci(Components.interface):

Cc["@company.name;1"] has no properties 说明中括号中组件Constract ID写错或者组件没有注册成功

Invalid InterfaceID: 说明Ci中括号中的名字写错,或者没有该接口(可以通过XPCOM Viewer查看现有的接口)

四、参数不匹配

IDL的声明参数和实际传递的参数不匹配,特别修改过参数,是注册的接口没有更新,这时候最难发现

五、已注册上组件每次在删除掉xpti.dat和compreg.dat后又注册不上,但也找不到问题所在,可以试一试在原来的代码

加减一空行,以示改变,这样可能会被注册成功。

【待续】

分享到:
评论

相关推荐

    XPCOM Wizard:该工具是用于xpcom组件开发的vc2010项目向导。-开源

    该工具是用于xpcom组件开发的vc2010项目向导。 您可以使用此向导创建xpcom组件。 工具的羽毛:1.所有xpcom组件开发环境均已创建(适用于vc2010); 2.支持简单的UI; 3.支持壁虎17/18/19

    创建XPCOM组件Creating XPCOM Components

    这是一本有关Gecko的书,Gecko是所有Mozilla品牌的软件及其衍生产品中使用的开源Web浏览器布局引擎,以及有关为基于Gecko的应用程序创建XPCOM组件的书。

    gecko-sdk,(用于XPCOM开发)

    XPCOM(跨平台组件对象模型)是Mozilla基金会开发的一种组件系统,它允许开发者创建可重用的、跨语言和跨平台的软件组件。XPCOM组件可以在Firefox、Thunderbird等Mozilla应用程序中使用,提供核心功能和服务。Gecko ...

    Creating XPCOM Components.pdf

    - **错误码**:用于处理常见的错误情况。 #### 第2章:使用XPCOM组件 本章将介绍如何在C++代码中使用XPCOM组件,并探讨如何通过XPConnect从脚本语言(如JavaScript)中调用这些组件。 #### 第3章:组件内部机制 - ...

    XPCOM实例供linux学习

    XPCOM,全称为“Cross Platform Component Object Model”,是由Mozilla基金会开发的一种跨平台的组件对象模型,主要用于构建可扩展的网络应用程序,特别是Firefox浏览器和其他基于Gecko引擎的应用。这个技术允许...

    xpcom descriptions

    标题“xpcom descriptions”指的是与XPCOM(Cross Platform Component Object Model)相关的描述性文档,这是一个在Mozilla项目中广泛使用的组件系统,允许不同编程语言之间的交互。XPCOM是Firefox、Thunderbird等...

    xul调用c++xpcom例子.rar

    Mozilla的XUL(XML User Interface Language)提供了一种方法,允许JavaScript调用C++编写的组件,这就是XPCom(Cross Platform Component Object Model)。本篇文章将深入探讨如何在XUL环境中通过XPCom调用C++组件...

    xpcom.rar_xpcom

    XPCom,全称为eXtensible Platform Components,是Mozilla基金会开发的一种跨平台的组件系统,它允许不同语言之间进行交互,使得开发者可以构建可重用的、模块化的软件组件。XPCom是Firefox、Thunderbird等Mozilla...

    xpcom 托盘 开发

    XPCom,全称为Cross Platform Component Object Model,是Mozilla基金会开发的一种跨平台组件模型,它允许开发者用C++编写底层组件,同时在JavaScript中调用这些组件,实现两者之间的无缝交互。这样做的好处在于,...

    creat xpcom componet

    XPCOM(Cross Platform Component Object Model)是Mozilla基金会开发的一种跨平台组件模型,它允许不同语言之间的组件交互,尤其在JavaScript中常用于访问和控制组件。 本书的主要读者群体是具有C++基础的开发者,...

    基于 Mozilla 的扩展开发

    此外,XPCOM(跨平台组件对象模型)是 Mozilla 的一个重要组成部分,它是一种接口技术,允许不同语言之间进行交互。 ### 2. 扩展开发基础 - **XUL**: XUL 是一种基于 XML 的用户界面描述语言,用于创建跨平台的...

    XPCOM开发笔记(包括嵌入式)

    XPCOM(Cross Platform Component Object Model)是一种跨平台组件对象模型,它是由Mozilla基金会为了Firefox浏览器和其他项目所设计的一套组件架构。XPCOM允许开发者创建可复用的软件组件,并支持多种编程语言如C++...

    本人整理的xpcom资料合集

    XPCom,全称为eXtensible Plug-in Component Model,是Mozilla基金会开发的一种组件模型,用于在Firefox、Thunderbird等开源软件中实现跨语言、跨进程的组件交互。它基于COM(Component Object Model)并进行了扩展...

    XPCOM数组作为参数注意的问题

    在IT行业中,尤其是在软件开发领域,跨平台组件对象模型(XPCOM)是Mozilla基金会的开源项目,如Firefox浏览器所使用的底层技术之一。XPCOM允许开发者创建可重用的跨语言、跨平台的组件。当涉及到XPCOM组件间的交互...

    Linux平台上的组件开发技术.pdf

    通过这些技术的比较,开发者可以根据项目需求选择最适合的组件开发方法。Linux平台的组件开发不仅能够提高软件的复用性,还能增强软件的适应性和可扩展性,以应对不断变化的网络环境和用户需求。文章的这部分内容...

    xpcom-test.zip_visual c_xpcom

    `xpcom`是Mozilla开发的一个跨平台组件接口,它允许不同编程语言之间进行交互,并在Firefox等开源浏览器中扮演着重要角色。 描述中提到"xpcom资料太少,一个可完整编译工程",这表明该压缩包可能包含了一个完整的、...

    用JS创建xpcom实例

    **XPCOM(eXtensible Component Object Model)** 是Mozilla基金会开发的一种组件对象模型,它允许不同语言之间进行交互,特别是在Firefox等基于Gecko浏览器的扩展开发中扮演着核心角色。JavaScript是XPCOM的一个...

    使用mozilla的xulrunner以及xpcom技术实现的客户端。

    不容易啊,研究了近一年的成果。不过只要你能掌握firefox的核心xulrunner以及xpcom技术,客户端的开发将会不是任何问题,包括跨平台,比如: mac os x, Linux。你所要关注的将会集中在核心技术的实现上。

    Mitschek_Bakkalaureatsarbeit_XPCOM_XUL-final-20100706

    XPCOM提供了一种跨平台的解决方案,使得开发出的组件能够在不同的操作系统上运行,这极大地提高了代码的复用性和灵活性。 2. **XPCOM组件架构**:XPCOM的组件架构基于接口和契约ID(contract ID)。每个组件实现一...

Global site tag (gtag.js) - Google Analytics