zoukankan      html  css  js  c++  java
  • python/c++接口库比较(SWIG,boost.python, pycxx, py++, sip, Weave, Pyrex )

    http://blog.csdn.net/lainegates/article/details/19565823

    目前有很多开源的python/c++ 绑定工具,搜了好多岾子,这里稍微总结下。

    SWIG

    • 支持 Python 2 and 3
    • 配置正确的话,可以全自动完成封装(*.i文件需要自己写)
    • 当不是全自动的时候,它大多会重复你的.h文件并给出提示
    • 除了Python外,还支持其他语言(Java, Ruby, Lua, 等)
    • 输出一个本地文件(这个文件会被编译成.pyd)和一个封装(这个封装是python脚本,调用对应生成的.pyd)
    • 绑定(Bindings)的性能不是太好,不支持内部类(inner classes)的封装
    • 不支持属性(通过getter/setters访问values)
    • 文档很全,很容易学习
    • google使用了
    • C++支持不太好

    Boost::Python

    • 支持 Python 2, 3和C++的绑定
    • 对于新手来说,学习它的语法有一定难度。但是这些语法很直观
    • 大量使用了 C++ templates (可能是好事,也可能是坏事),会很明显地提高编译时间
    • 随boost库一起发布,且boost库有用,但很大
    • 刚开始编译使用boost.python封装好的C++代码时,出现的各种错误
    • 一些语法不易学习,像函数返回值时的规则
    • 非常可靠、稳定、经过充分测试的库(boost库里的部件都具有这特性)
    • 不支持属性
    • 支持文档写得比较差,有些功能文档里甚至都没有写。
    • 编译后的pyd文件有些大,这不利于在手机或者嵌入平台使用
    • 配合py++使用,几乎可以全自动封装项目

    Py++

    • 支持 Python 2, 3 和C++的绑定
    • 它调用boost.python自动完成项目绑定,相当于boost.python的高级工具

    PyCxx

    • 支持 Python 2, 3 和C++的绑定
    • 轻量级的封装库,用的人挺多
    • 只支持C++
    • 目前没有自动绑定工具 

    Python C api(Python 的帮助文档里有)

    • 性能高
    • 灵活
    • 适合嵌入式
    • C++支持差
    • 复杂

    ctypes(Python自带的库) 

    • 灵活
    • 对c的代码几乎无缝调用
    • 使用起来比较繁琐
    • 只支持c语言

    SIP

    • 支持 Python 2, 3 和C++的绑定
    • 在PyQt中使用过,其他地方很少见它

    Weave

    • 性能高
    • 很少见

    Pyrex 

    • 很少见
    • 目前还没有成熟的项目
    • 性能较高
    • 接近于Python语法

    Cython 

    • 基于Pyrex,很多外部库的扩展用它写的

    参考: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

  • 相关阅读:
    extjs4 数据实体模型
    WPF实现MDI窗体的方法
    WPF中图形表示语法详解(Path之Data属性语法
    Wpf DataGrid 数据绑定 排序 删除
    WPF: 使用TestApi模拟用户输入
    extjs4 事件处理
    WPF触发器
    XPath语法 在C#中使用XPath示例
    WPF 4 中DataGrid的模板列做双向数据绑定
    extjs4 标准面板
  • 原文地址:https://www.cnblogs.com/avincross/p/8409918.html
Copyright © 2011-2022 走看看