更多名人名博

上市公司专栏

实时股价每分更新

纳斯达克(美元)(市值:亿美元)
综指: 涨跌幅:
公司 股价 涨幅度 市值
盛大
网易
九城
畅游
完美
巨人
新浪
百度
恒生指数(港币)(市值:亿港币)
综指: 涨跌幅:
公司 股价 涨幅度 市值
腾讯
金山
网龙
创业板
综指: 涨跌幅:
公司 股价 涨幅度 市值
宝网
d
您现在的位置:首页> 开发|游戏程序|专业工具| > XPCOM开发简介

XPCOM开发简介

来源:IIEEG04-14-2011

1.首先安装GECKO SDK开发包,并解压到本地目录 例如:/home/user/sdk/gecko-sdk/
2.为主接口类创建GUID  uuidgen
2.编写接口文件***.idl
3.分别生成***.h和***.xpt文件(xpidl -m header/typelib -w -o /输出路径/输出文件名 -I /Gecko/IDL所在路径 将要编译的***.idl文件)
4.修改生成的组件的头文件***.h,在开始加入宏保护代码(#ifndef _MY_MYCOMPONENT_H_...),生成一个组件用的GUID,添加下面的行到头文件中
 首先是Contract ID,然后是类名,GUID
 #define MY_COMPONENT_CONTRACTID "@mydomain.com/XPCOMSample/MyComponent;1"
 #define MY_COMPONENT_CLASSNAME  "A Simple XPCOM Sample"
 #define MY_COMPONENT_CID        GUID
5.创建你的组件的头文件****.h,把***.h文件中以/*Header file */开始的那段代码拷贝到此头文件中,替换其中的_MYCLASS_为你的类名
6.创建你的组件的实现文件****.cpp,添加头文件引用
 #include "****.h"
  把***.h文件中以/*Implementation file */开始的那段代码拷贝到此头文件中,替换其中的_MYCLASS_为你的类名,添加实现代码
6.创建你的组件定义文件****Module.cpp,添加头文件引用
 #include "nsIGenericFactory.h" //Mozilla GenericFactory definitions
 #include "****.h"
  添加NS_GENERIC_FACTORY_CONSTRUCTOR(MyComponent)来定义你的组件的构造器
  为你的组件添加类名,contract ID, GUID定义
 static nsModuleComponentInfo components[] =
 {
  {
   MY_COMPONENT_CLASSNAME,
   MY_COMPONENT_CID,
   MY_COMPONENT_CONTRACTID,
   MyComponentConstructor,
  }
 };
  添加NS_IMPL_NSGETMODULE("****Module",components)用于向Mozilla输出以上定义信息

7.创建makefile,生成****.so
  (Embed:/home/embed/microb-engine/microb-engine/build-tree/mozilla/build/autoconf/make-makefile extentions
   目录名
   会在此目录下生成Makefile文件)

/*embed下不用8,9*/
8.在Mozilla上注册此组件
  拷贝****.so和前面生成的***.xpt到Mozilla的components目录下(~/firefox/components, ~/Mozilla/components)
  运行regxpcom命令,注册组件(可能需要提供组件所在的路径)
  从Mozilla路径下删除xpti.dat和compreg.dat(这两个文件会在Mozilla下次重启时自动生成)
  也可以touch Mozilla/FireFox安装目录下一个名为.autoreg的文件
9.测试组件
  重新启动Mozilla或是FireFox
  打开测试页面****Test.html,点击"GO"按钮,就能看到预期的结果了。