理解swig和py++的區別

原创 2007年09月17日 04:10:00
用swig為perl和java封裝過C庫,感覺一直不錯。
後來發現很多人都改用py++,也一直沒空研究,今天終于明白區別了。

swig是一個獨立的工具,基本不需要接合額外的工具就可以完成封裝。
swig是手工封裝接口,需要用到什麽,就封裝什麽。
在集成C庫的時候,尤其是小規模應用,這個方式還算比較高效的。

但是在全面封裝一個完整的庫,尤其是C++的庫,手工把所有接口都定義一遍會累死。

py++則依賴一個工具鏈,實現原理復雜一點。

首先,gccxml完成了一個很重要的工作,就是把C/C++的代碼結構用XML表示。這樣任何語言都可以輕松的分析C/C++庫的結構,而無須自行去解析C/C++語法。
真是一個偉大的工具!

pygccxml則完成了將XML讀入python的功能,并提供方便的對象來查詢XML所表示的C++庫的結構。相比swig的手動作業,這個過程是全自動的,用程序來解決。

然後,py++將需要封裝的接口根據python的封裝方式產生出wrapper的源代碼。

最後,編譯就可以了。

終于明白為什麽python這麽快就擁有了這麽多庫,原來有了py++,完整封裝一個C/C++庫這麽容易啊!

python/c++接口库比较(SWIG,boost.python, pycxx, py++, sip, Weave, Pyrex )

目前有很多开源的python/c++ 绑定工具,搜了好多岾子,这里稍微总结下。 SWIG 支持 Python 2 and 3 配置正确的话,可以全自动完成封装(*.i文件需要自己写) 当不是全自...
  • LaineGates
  • LaineGates
  • 2014年02月20日 18:34
  • 6220

asp.net导出成EXCEL

以下是导出的方法:public static void ToExcel(System.Web.UI.Control ctl)    {        //HttpContext.Current.Res...
  • wwwhao22
  • wwwhao22
  • 2010年05月20日 10:35
  • 158

HDFS,YARN,HBASE,ZOOKEEPER主要默认端口

Hadoop集群的各部分一般都会使用到多个端口,有些是daemon之间进行交互之用,有些是用于RPC访问以及HTTP访问。而随着Hadoop周边组件的增多,完全记不住哪个端口对应哪个应用,特收集记录如...
  • u013476338
  • u013476338
  • 2017年03月17日 15:06
  • 891

大数据学习5:hdfs和yarn 的学习记录

大数据学习5:hdfs和yarn 的学习记录 ======================= 一、hdfs启动过程的解析 二、hdfs配置参数 三、yarn资源调度配置 四、hdfs使用,yar...
  • ggwxk1990
  • ggwxk1990
  • 2017年08月26日 16:58
  • 232

main和_main的区别

具体介绍了main和_main的编译运行结果的区别 已经内在原因 可以很好的帮助理解系统的编译特点...
  • xuweiwei1860
  • xuweiwei1860
  • 2014年03月13日 10:34
  • 662

MSI文件和EXE文件有什么区别?

msi是Windows installer开发出来的程序安装文件,它可以让你安装,修改,卸载你所安装的程序.说白了msi就是Windows installer的数据包,把所有和安装文件相关的内容封装在...
  • Angelia222
  • Angelia222
  • 2011年05月27日 16:14
  • 3384

Web Service技术之hession、soap、restful学习总结

Web Service技术之hession、soap、restful学习总结,下面通过一张图来说明基于SOAP协议的webservice和基于Restful风格的WebService的实现和区别...
  • u011278012
  • u011278012
  • 2016年07月18日 18:43
  • 641

Spark入门3-RDD的实现

njzhujinhua@2017/12/15RDD的实现 1 作业调度 2 内存管理 3 cache persist 与checkpoint的关系 cache与persist cachepersist...
  • NJZhuJinhua
  • NJZhuJinhua
  • 2017年12月15日 01:11
  • 98

InnoDB与Myisam的主要区别

1、 事务处理 innodb支持事务功能,myisam 不支持。 Myisam的执行速度更快,性能更好。 2、锁机制不同 InnoDB 支持行级锁,myisam为表级锁。 注...
  • gua___gua
  • gua___gua
  • 2015年03月15日 23:57
  • 308

dropdownlist与select的区别

select 用javascript获得值selectedValuedropdownlist 获得值value
  • begintransaction
  • begintransaction
  • 2010年09月09日 11:13
  • 434
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:理解swig和py++的區別
举报原因:
原因补充:

(最多只允许输入30个字)