您的位置:首页 > 编程语言 > C语言/C++

使用C++创建XPCOM组件

2018-02-15 20:02 375 查看

使用C++创建XPCOM组件

使用C创建XPCOM组件
关于

下载

创建组件
为您的平台下载Gecko SDK

为您的主接口创建一个GUID

创建接口定义文件 - IMyComponentidl

从接口定义文件中生成接口头文件和typelib文件

接口头文件IMyComponenth包含用于构建组件头和实现文件的模板您可以复制和粘贴模板以创建这些文件只更改组件名称

创建你的组件头文件 - MyComponenth

创建你的组件实现文件 - MyComponentcpp

创建您的模块定义文件 - MyComponentModulecpp

创建makefile和或项目

构建样本
从这里下载示例代码

编辑makefile

例子

用Mozilla注册新组件

测试新组件

链接和资源

修订记录

关于

这是一个关于在Linux和MS Windows上创建,构建和注册XPCOM组件的分步教程。

下载

本教程的完整源代码可以从这里下载.。

创建组件

1.为您的平台下载Gecko SDK。

你可以在http://ftp.mozilla.org/pub/mozilla.org/mozilla/releases/mozilla1.7/找到它。

如果你愿意,你可以选择不同的Mozilla版本。

将SDK解压缩到本地目录。

2.为您的主接口创建一个GUID。

Windows上,您可以使用
guidgen
实用程序。

Linux上,您可以使用
uuidgen
实用程序。

3.创建接口定义文件 -
IMyComponent.idl

使用以下模板,向接口添加方法和属性。

填写您生成的GUID。

#include "nsISupports.idl"
[scriptable, uuid(_YOUR_INTERFACE_GUID_)]
interface IMyComponent : nsISupports
{
long Add(in long a, in long b);
};


4.从接口定义文件中生成接口头文件和typelib文件。

使用Gecko SDK附带的xpidl实用程序。

用以下命令中的
"_DIR_"
替换Gecko SDK主目录下找到的
xpcom/idl
目录的完整路径。

xpidl -m
头文件
-I_DIR_ IMyComponent.idl
将创建
IMyComponent.h
头文件。

xpidl -m typelib -I_DIR_ IMyComponent.idl
将创建
IMyComponent.xpt typelib
文件。

5.接口头文件
IMyComponent.h
包含用于构建组件头和实现文件的模板。您可以复制和粘贴模板以创建这些文件,只更改组件名称。

6. 创建你的组件头文件 -
MyComponent.h

首先插入双重包含保护代码(
#ifndef _MY_COMPONENT_H_
….)。

添加
#include “IMyComponent.h”
以包含接口定义。

为您的组件创建一个GUID。

添加以下行,它们定义组件名称,合同ID和GUID:

#define MY_COMPONENT_CONTRACTID "@mydomain.com/XPCOMSample/MyComponent;1"
#define MY_COMPONENT_CLASSNAME "A Simple XPCOM Sample"
#define MY_COMPONENT_CID _YOUR_COMPONENT_GUID_


IMyComponent.h
中的头文件模板(以
/* Header file */
开头)复制到
MyComponent.h
文件中。

_MYCLASS_
的所有实例替换为组件的名称。

7.创建你的组件实现文件 -
MyComponent.cpp

添加
#include “MyComponent.h”
以包含组件定义。

将实现模板从
IMyComponent.h
(以
/*Implementation file*/
开头)复制到
MyComponent.cpp
文件中。

_MYCLASS_
的所有实例替换为组件的名称。

添加方法实现代码。

8.创建您的模块定义文件 -
MyComponentModule.cpp

添加
#include“nsIGenericFactory.h”
以包含Mozilla GenericFactory定义。

添加
#include“MyComponent.h”
以包含组件定义。

添加
NS_GENERIC_FACTORY_CONSTRUCTOR(MyComponent)
以定义组件的构造函数。

添加

static nsModuleComponentInfo components[] =
{
{
MY_COMPONENT_CLASSNAME,
MY_COMPONENT_CID,
MY_COMPONENT_CONTRACTID,
MyComponentConstructor,
}
};


​ 定义组件的类名称,合同ID和GUID。

添加
NS_IMPL_NSGETMODULE
(“MyComponentsModule”,组件)将上述信息导出到Mozilla。

9.创建
makefile
/
或项目。

您可以使用此示例提供的模板来创建您的自定义生成文件。

或者,您可以创建一个具有类似设置的Visual C ++项目(在Windows上)。

构建样本

1.从这里下载示例代码

将示例解压缩到本地目录。

2.编辑makefile。

makefile位于示例的src目录中。

它被命名为用于Linux的Makefile,用于Windows的
MyComponent.mak


编辑makefile,改变
GECKO_SDK_PATH
变量指向你的Gecko SDK目录。

补充:使用包含的Visual Studio项目时:

打开项目设置:项目>设置…

选择左上角的设置:所有配置。

打开C / C ++选项卡并在类别下拉列表中选择预处理器。

确保“其他包含目录”指向您的Gecko SDK。

打开链接选项卡并在类别下拉列表中选择输入。

确保“附加库路径”指向您的Gecko SDK。

3.例子

打开命令shell(Windows上的cmd; Linux上的tcsh,bash,xterm等)。

导航到示例src目录。

在Linux上发出make命令。 MyComponent.so文件已创建。

在Windows上发出一个
nmake / f MyComponent.mak
命令。 Debug / MyComponent.dll被创建。

或者,在Windows上,为发布版本发布
nmake / f“MyComponent.mak”CFG =“MyComponent - Win32 Release”
命令。
Release/MyComponent.dll
被创建。

补充:使用包含的Visual Studio项目时:

在Build> Set Active Configuration …中选择想要的配置(Debug / Release)

选择生成>生成
MyComponent.dll


4.用Mozilla注册新组件。

MyComponent.so
/
MyComponent.dll
IMyComponent.xpt
文件复制到Mozilla组件目录。

在Windows上,此目录通常位于:
C:/Program Files/Mozilla Firefox/components


在Linux上,这个目录通常位于
〜/firefox/components
(或
〜/mozilla/components
)。

运行随Gecko SDK提供的regxpcom命令来注册新组件。

您可能需要提供其他参数:
regxpcom -x _COMPONENTS_DIR_
其中
_COMPONENTS_DIR_
是组件目录。

从Mozilla配置文件目录中删除xpti.dat和compreg.dat文件。这些文件将在下次重新启动时由Mozilla自动重建。

补充:您也可以在主
Mozilla/Firefox
安装目录中“touch”(创建或更新)名为.autoreg的文件。

配置文件目录通常位于:

~/.mozilla/firefox/default.???
在Linux上。

C:/Documents and Settings/USERNAME/Application Data/Mozilla/Firefox/Profiles/default.???
在Windows上。

5.测试新组件。

重新启动Mozilla。

打开示例中提供的MyComponentTest.html文件,然后单击“开始”按钮。

如果一切正常,你应该看到一个对话框说“3 + 4 = 7”。

链接和资源

IBM developerWorks - XPCOM概述 part 1part 2part 3part 4part 5

Doug Turner创建XPCOM组件 。Doug Turner创建XPCOM组件

使用Mozilla创建应用程序 [第8章 - XPCOM]

修订记录

2005年6月3日

修改Windows makefile(MyComponent.mak)以使用最新的Gecko SDK。旧版本的示例可以在这里找到。

将示例中添加了Visual Studio 6项目文件

添加了关于使用“.autoreg”文件注册新组件的提示。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++ com xpcom 跨平台