使用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 5Doug Turner创建XPCOM组件 。Doug Turner创建XPCOM组件 。
使用Mozilla创建应用程序 [第8章 - XPCOM]
修订记录
2005年6月3日修改Windows makefile(MyComponent.mak)以使用最新的Gecko SDK。旧版本的示例可以在这里找到。
将示例中添加了Visual Studio 6项目文件。
添加了关于使用“.autoreg”文件注册新组件的提示。
相关文章推荐
- 利用C++创建XPCOM组件(英文)
- 创建XPCOM组件 3. 使用XPCOM组件
- 创建windows下的第一个C++ XPCOM组件
- 手把手教你使用VB来创建ASP组件
- 手把手教你使用VB来创建ASP组件
- 手把手教你使用VB来创建ASP组件
- 使用VB创建ASP服务器端组件
- python如何使用firefox的xpcom组件的
- 使用NetBeans C/C++ Pack 5.5 创建程序(二)
- 创建 XPCOM 组件:XPCOM 简介
- C++--如何实现SDI程序使用CSplitterWnd创建的多个视图的动态地显示和关闭视图
- C++--如何实现SDI程序使用CSplitterWnd创建的多个视图的动态地显示和关闭视图
- C++--如何实现SDI程序使用CSplitterWnd创建的多个视图的动态地显示和关闭视图
- 手把手教你使用VB来创建ASP组件
- 手把手教你使用VB来创建ASP组件
- 手把手教你使用VB来创建ASP组件
- 使用ASP.NET页面创建可视的UI,在客户机上实例化MSXML分析器的页面从中间层组件取出XML数据、操作并显示 并有问题请高手解决
- C++点滴:创建对象数组的时候,不要使用继承
- 使用Visual C++创建Crypto加/解密组件
- 用 JavaScript 创建 XPCOM 组件