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