http://blog.csdn.net/lainegates/article/details/19565823html
目前有不少開源的python/c++ 綁定工具,搜了好多岾子,這裏稍微總結下。python
SWIGc++
- 支持 Python 2 and 3
- 配置正確的話,能夠全自動完成封裝(*.i文件須要本身寫)
- 當不是全自動的時候,它大多會重複你的.h文件並給出提示
- 除了Python外,還支持其餘語言(Java, Ruby, Lua, 等)
- 輸出一個本地文件(這個文件會被編譯成.pyd)和一個封裝(這個封裝是python腳本,調用對應生成的.pyd)
- 綁定(Bindings)的性能不是太好,不支持內部類(inner classes)的封裝
- 不支持屬性(經過getter/setters訪問values)
- 文檔很全,很容易學習
- google使用了
- C++支持不太好
Boost::Pythonweb
- 支持 Python 2, 3和C++的綁定
- 對於新手來講,學習它的語法有必定難度。可是這些語法很直觀
- 大量使用了 C++ templates (多是好事,也多是壞事),會很明顯地提升編譯時間
- 隨boost庫一塊兒發佈,且boost庫有用,但很大
- 剛開始編譯使用boost.python封裝好的C++代碼時,出現的各類錯誤
- 一些語法不易學習,像函數返回值時的規則
- 很是可靠、穩定、通過充分測試的庫(boost庫裏的部件都具備這特性)
- 不支持屬性
- 支持文檔寫得比較差,有些功能文檔裏甚至都沒有寫。
- 編譯後的pyd文件有些大,這不利於在手機或者嵌入平臺使用
- 配合py++使用,幾乎能夠全自動封裝項目
Py++api
- 支持 Python 2, 3 和C++的綁定
- 它調用boost.python自動完成項目綁定,至關於boost.python的高級工具
PyCxx函數
- 支持 Python 2, 3 和C++的綁定
- 輕量級的封裝庫,用的人挺多
- 只支持C++
- 目前沒有自動綁定工具
Python C api(Python 的幫助文檔裏有)工具
ctypes(Python自帶的庫) 性能
- 靈活
- 對c的代碼幾乎無縫調用
- 使用起來比較繁瑣
- 只支持c語言
SIP學習
- 支持 Python 2, 3 和C++的綁定
- 在PyQt中使用過,其餘地方不多見它
Weave測試
Pyrex
- 不多見
- 目前尚未成熟的項目
- 性能較高
- 接近於Python語法
Cython
參考:http://stackoverflow.com/questions/1492755/python-c-binding-library-comparison
http://web.archive.org/web/20090604182721/http://www.suttoncourtenay.org.uk/duncan/accu/integratingpython.html
https://wiki.python.org/moin/IntegratingPythonWithOtherLanguages