创建windows下的第一个C++ XPCOM组件
2013-11-03 11:18
381 查看
本文翻译自 Creating a C++ XPCOM
component(链接为http://www.iosart.com/firefox/xpcom/),并尝试创建自己的第一个XPCOM工程
这是一个step-by-step的入门教程,讲述在Windows下创建,构建和注册一个XPCOM 组件的过程。
本文涉及的sdk和源代码可以从我的资源里面下载。
创建组件
1. 下载 gecko-sdk-i586-pc-msvc-1.7.zip,解压到本地。
2. 为主接口创建GUID:
Windows下用guidgen (Visual Studio 2003/2005 工具->创建GUID)
3. 创建接口定义 文件- IMyComponent.idl
a. 使用以下模板,添加方法和属性给接口。b. 填入刚生成的GUID
4. 用接口定义文件生成接口头文件和类型库(typelib)文件
a. 使用Gecko SDK中的xpidl 工具. xpidl在Gecko SDK主目录的bin/下(注意运行前需要将glib-1.2.dll,libIDL-0.6.dll拷贝到bin目录下,这些库包含在buildtools\windows\bin\x86下。)
b. 注意要将下列命令中的_DIR_替换为Gecko SDK主目录下的idl目录路径
c. xpidl -m header -I_DIR_ IMyComponent.idl (IMyComponent.h最好拷贝到bin目录下面,否则填写完整路径,会创建IMyComponent.h)
d. xpidl -m typelib -I_DIR_ IMyComponent.idl (同上,会创建IMyComponent.xpt)
e. 生成的IMyComponent.h,IMyComponent.xpt在与.idl同一目录下目录下。
5. 接口头文件IMyComponent.h中包含了模板,用于构建你自己组件头和实现文件。你可以拷贝粘帖这些模板,只要修改组件名就可以了。
6. 创建你的组件的头文件 -MyComponent.h
7. MyComponent.cpp
8. MyComponentModule.cpp
9. 创建makefiles或者工程
a. 你可以根据例子 里提供的模板去定制你的makefile.
b. 或者,你可以创建一个Visual C++工程,进行一些简单的设置就可以了。
从例子程序构建
1. 从这里 下载示例代码,解压到本地。
2. 编辑makefile
a. makefile位于示例代码的src目录下。
b. Makefile用于Linux, MyComponent.mak用于Windows.
c. 编辑makefile, 改变 GECKO_SDK_PATH 变量指向你的Gecko SDK 目录。
3. 构建示例程序
a. 打开命令行或shell(Windows下cmd, Linux下tcsh, bash等)
b. 切换到示例代码的目录。
c. Linux下键入make, MyComponent.so将被创建。
d. Windows下键入 nmake /f MyComponent.mak. Debug\MyComponent.dll将创建, 注意,如果提示缺少nspr4.lib, plc4.lib, plds4.lib, 下载gecko-sdk-i586-pc-msvc-1.8b1.zip解压后在lib文件夹下。Mozilla的文件太乱了,1.7和1.8的SDK文件都不全,所以只能1.7和1.8都下载~
e. 或者用 nmake /f "MyComponent.mak" CFG="MyComponent - Win32 Release" 创建release版的,Release\MyComponent.dll 将被创建
4. 注册新组件到Mozilla中
a. 拷贝 MyComponent.so/MyComponent.dll和IMyComponent.xpt 到Mozilla的components目录。在Windows下这个目录一般在 C:\Program Files\Mozilla Firefox\components. Linux下~/firefox/components (或~/mozilla/components)
b. 运行Gecko SDK 提供的regxpcom注册新组件,你可以用 regxpcom -x components路径 来注册,或者在Mozilla安装路径下创建.autoreg,让它自动注册。
c. 删除Mozilla配置目录下的 xpti.dat 和compreg.dat. Windows配置目录在C:\Documents and Settings\USERNAME\Application Data\Mozilla\Firefox\Profiles\default.???, Linux下的在~/.mozilla/firefox/default.???下。
5. 测试新组件
a. 重启Mozilla 或 Firefox
b. 打开 示例代码里的MyComponentsTest.html, 点"GO"按钮
c. 如果一切正常,你可以看到 “3+4=7”.
链接和资源:
1. IBM developerWorks - XPCOM Overview[第1部分], [第2部分], [第3部分],[第4部分], [第5部分]
2. Doug Turner的创建XPCOM组件
3. 为Mozilla创建应用程序 【第八章-XPCOM 】
参考资料: http://www.cnblogs.com/phinecos/archive/2008/04/25/1171614.html
component(链接为http://www.iosart.com/firefox/xpcom/),并尝试创建自己的第一个XPCOM工程
这是一个step-by-step的入门教程,讲述在Windows下创建,构建和注册一个XPCOM 组件的过程。
本文涉及的sdk和源代码可以从我的资源里面下载。
创建组件
1. 下载 gecko-sdk-i586-pc-msvc-1.7.zip,解压到本地。
2. 为主接口创建GUID:
Windows下用guidgen (Visual Studio 2003/2005 工具->创建GUID)
3. 创建接口定义 文件- IMyComponent.idl
a. 使用以下模板,添加方法和属性给接口。b. 填入刚生成的GUID
#include "nsISupports.idl" [scriptable, uuid(你的GUID)] interface IMyComponent : nsISupports { long Add(in long a, in long b); };
4. 用接口定义文件生成接口头文件和类型库(typelib)文件
a. 使用Gecko SDK中的xpidl 工具. xpidl在Gecko SDK主目录的bin/下(注意运行前需要将glib-1.2.dll,libIDL-0.6.dll拷贝到bin目录下,这些库包含在buildtools\windows\bin\x86下。)
b. 注意要将下列命令中的_DIR_替换为Gecko SDK主目录下的idl目录路径
c. xpidl -m header -I_DIR_ IMyComponent.idl (IMyComponent.h最好拷贝到bin目录下面,否则填写完整路径,会创建IMyComponent.h)
d. xpidl -m typelib -I_DIR_ IMyComponent.idl (同上,会创建IMyComponent.xpt)
e. 生成的IMyComponent.h,IMyComponent.xpt在与.idl同一目录下目录下。
5. 接口头文件IMyComponent.h中包含了模板,用于构建你自己组件头和实现文件。你可以拷贝粘帖这些模板,只要修改组件名就可以了。
6. 创建你的组件的头文件 -MyComponent.h
#pragma once #ifndef _MY_COMPONENT_H_ #define _MY_COMPONENT_H_ //加入 #include "IMyComponent.h" 以包含接口的定义 #include "IMyComponent.h" #define MY_COMPONENT_CONTRACTID "@mydomain.com/XPCOMSample/MyComponent;1" //契约ID #define MY_COMPONENT_CLASSNAME "A Simple XPCOM Sample" #define MY_COMPONENT_CID {0xb7b04070, 0x45fc, 0x4635,{ 0xb2, 0x19, 0x7a, 0x17, 0x2f, 0x80, 0x6b, 0xee } } class MyComponent:public IMyComponent { public: NS_DECL_ISUPPORTS NS_DECL_IMYCOMPONENT MyComponent(void); ~MyComponent(void); }; #endif
7. MyComponent.cpp
#include "MyComponent.h" NS_IMPL_ISUPPORTS1(MyComponent, IMyComponent) MyComponent::MyComponent(void) { } MyComponent::~MyComponent(void) { } NS_IMETHODIMP MyComponent::Add(PRInt32 a, PRInt32 b, PRInt32 *_retval) { *_retval = a + b; return NS_OK; }
8. MyComponentModule.cpp
#include "nsIGenericFactory.h" #include "MyComponent.h" NS_GENERIC_FACTORY_CONSTRUCTOR(MyComponent) static nsModuleComponentInfo components[] = { { MY_COMPONENT_CLASSNAME, MY_COMPONENT_CID, MY_COMPONENT_CONTRACTID, MyComponentConstructor, } }; NS_IMPL_NSGETMODELE("MyComponentsModule", components)
9. 创建makefiles或者工程
a. 你可以根据例子 里提供的模板去定制你的makefile.
b. 或者,你可以创建一个Visual C++工程,进行一些简单的设置就可以了。
从例子程序构建
1. 从这里 下载示例代码,解压到本地。
2. 编辑makefile
a. makefile位于示例代码的src目录下。
b. Makefile用于Linux, MyComponent.mak用于Windows.
c. 编辑makefile, 改变 GECKO_SDK_PATH 变量指向你的Gecko SDK 目录。
3. 构建示例程序
a. 打开命令行或shell(Windows下cmd, Linux下tcsh, bash等)
b. 切换到示例代码的目录。
c. Linux下键入make, MyComponent.so将被创建。
d. Windows下键入 nmake /f MyComponent.mak. Debug\MyComponent.dll将创建, 注意,如果提示缺少nspr4.lib, plc4.lib, plds4.lib, 下载gecko-sdk-i586-pc-msvc-1.8b1.zip解压后在lib文件夹下。Mozilla的文件太乱了,1.7和1.8的SDK文件都不全,所以只能1.7和1.8都下载~
e. 或者用 nmake /f "MyComponent.mak" CFG="MyComponent - Win32 Release" 创建release版的,Release\MyComponent.dll 将被创建
4. 注册新组件到Mozilla中
a. 拷贝 MyComponent.so/MyComponent.dll和IMyComponent.xpt 到Mozilla的components目录。在Windows下这个目录一般在 C:\Program Files\Mozilla Firefox\components. Linux下~/firefox/components (或~/mozilla/components)
b. 运行Gecko SDK 提供的regxpcom注册新组件,你可以用 regxpcom -x components路径 来注册,或者在Mozilla安装路径下创建.autoreg,让它自动注册。
c. 删除Mozilla配置目录下的 xpti.dat 和compreg.dat. Windows配置目录在C:\Documents and Settings\USERNAME\Application Data\Mozilla\Firefox\Profiles\default.???, Linux下的在~/.mozilla/firefox/default.???下。
5. 测试新组件
a. 重启Mozilla 或 Firefox
b. 打开 示例代码里的MyComponentsTest.html, 点"GO"按钮
c. 如果一切正常,你可以看到 “3+4=7”.
链接和资源:
1. IBM developerWorks - XPCOM Overview[第1部分], [第2部分], [第3部分],[第4部分], [第5部分]
2. Doug Turner的创建XPCOM组件
3. 为Mozilla创建应用程序 【第八章-XPCOM 】
参考资料: http://www.cnblogs.com/phinecos/archive/2008/04/25/1171614.html
相关文章推荐
- 使用C++创建XPCOM组件
- 利用C++创建XPCOM组件(英文)
- xulrunner中Mozilla XPCOM C++组件示例Sample在VC中的配置方法
- 【Visual C++】游戏开发笔记二十六 DirectX 11各组件的介绍&第一个DirectX 11 Demo的创建
- Windows C++ 应用程序通用日志组件(组件及测试程序下载)
- 第三讲:C++基础语法 & 创建第一个场景 ------学习笔记
- C++Windows编程之创建窗口
- C++ 创建windows 服务
- Windows下使用django做website(创建第一个django工程并使用pycharm打开执行)
- 如何在windows下用C++创建目录
- Windows程序设计--创建第一个窗口
- UE4 C++计时器,创建对象,组件
- Android基础之用Eclipse搭建Android开发环境和创建第一个Android项目(Windows平台)
- Android基础之用Eclipse搭建Android开发环境和创建第一个Android项目(Windows平台)
- 创建 Windows 应用程序 (C++)
- Android基础之用Eclipse搭建Android开发环境和创建第一个Android项目(Windows平台)
- 纯C++创建Windows窗体(理解WinMain()与WndProc())
- [转]Windows C++ 应用程序通用日志组件
- C/C++ 判断文件夹是否存在以及创建、删除文件夹 windows以及linux通用
- Eclipse 创建第一个c++项目