关闭

理解swig和py++的區別

748人阅读 评论(0) 收藏 举报
用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++庫這麽容易啊!
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:4026次
    • 积分:82
    • 等级:
    • 排名:千里之外
    • 原创:4篇
    • 转载:0篇
    • 译文:0篇
    • 评论:2条
    文章分类
    文章存档