当前位置:首页 » 服务器技术
开发技术指南» 文章正文
    引言: LINUXNT-WEIGHT: normal; FONT-FA
 

 

    摘要:help ......
 ·字符串nds    »显示摘要«
    摘要:#ifndef _nds_trim_h#define _nds_trim_h #include <string>#include <algorithm>#include <functional>#include <cctype>using namespace std; namespace nds{ inline string& ltrim(string &ss){ string::iterat......


XPCOM--LINUX下的组件开发技术
xpcom

  【相关文章:我观MIDAS

linux下的组件开发技术 【扩展阅读:标准C++类string的Copy-On

  【扩展信息:标准C++类string的Copy-On

com技术作为微软推行的一种组件技术,在windows平台站有重要地位,在模块重用,跨语言通信等方面都能见到其身影。但今天给我要介绍的是linux下的com实现----xpcom,这是mozilla浏览器项目中所使用的基本技术,我们可以用c++制作xpcom组件,在c++客户程序或mozilla浏览器中通过javascript脚本来调用组件,从而实现软件模块的复用。

1、         配置xpcom的开发环境。

首先到mozilla的ftp下载gecko-sdk包,这是xpcom的开发包,mozilla的源码中也包括该sdk。解压该tgz包,可以看到生成大约十多个目录:

/sdk/gecko-sdk/

/sdk/gecko-sdk/xpcom/bin

/sdk/gecko-sdk/xpcom/idl

/sdk/gecko-sdk/xpcom/include

/sdk/gecko-sdk/nspr

......

 

这里说明一下其中的一些基本部分。

/sdk/gecko-sdk/xpcom/bin下主要包含了一些文件:

 

xpidl:这是idl编译器,用以根据idl产生c++头文件或组件类型库文件.

regxpcom:这是组件注册工作,如果我们在mozilla浏览器中调用组件,其实不会用该工具。

xpt-dump:类型库查看程序,用来查看.xpt文件中的组件信息。

libxpcomglue.a:这是xpcom的基本库文件,在生成组件时将会被连接到我们的组件库中。

 

/sdk/gecko-sdk/xpcom/idl,该目录中包含了idl数据类型定义文件。

 

/sdk/gecko-sdk/xpcom/include,其中包含了制作xpcom时所需要的基本的c++头文件。

 

/sdk/gecko-sdk中还包含了其它一引起目录,如/sdk/sdk/gecko-sdk/string/include,其中包含了xpcom中常字符串类的c++头

文件,如果我们的组件中需要使用这些类,只需包含进必要的头文件及库文件即可。

 

2、         撰写idl文件。

这里要先用到一个uuidgen(linux下类似ms guidgen的一个命令行程序)用以产生组件的uuid, 我们将其输出先重定向到一个文本中,呆会儿即可使用,这里我们举一个简单的例子,来演示组件的生成过程。

idl文件如下:

//filename: nsimycom.idl

//begin idl --------------------------------------

#include "nsisupports.idl"

 

[scriptable,  uuid(5217115e-11fe-4d01-966d-9b27ffda6498)]

interface nsimycom:nsisupports

{

      void hello(in string in_str, [retval] out string out_str);

};

//end idl-----------------------------------------

 

好了,该组件很简单,只有一个接口,并且也只有一个方法,该方法有一个字符串输入参数in_str,并且有一个字符串返回值out_str。

 


...   下一页
 ·xray@net,业余写的sniffer    »显示摘要«
    摘要: delphi 6 + ansi c (libpcap),第三方控件只用了toolbar2000 因为赞叹win98下的netxray,在想了解实现原理的时候就写了它,因为delphi+pcap的cross-platform特性,相信我可以让它在linux下跑。:) 写的时候,把protocol的格式翻译成object pascal比较烦 目前可以解到tcp层,支持pppoe,现在还只能解应用层的http/ftp等一些明文的protocol ......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE