SamsonWang
V2EX  ›  C

求推荐 C++中调用 Python 的方案

  •  
  •   SamsonWang · Nov 12, 2018 · 3869 views
    This topic created in 2740 days ago, the information mentioned may be changed or developed.

    我需要在 c++中调用 python,目前( 2018 年 11 月)比较主流的方案有哪些呢?请结合自己的实践给出推荐理由。

    我目前查资料找到的可能备选方案:

    1. boost.python
    2. pybind11

    先谢谢大家~

    Supplement 1  ·  Nov 13, 2018
    我正在维护一个桌面工具软件,这个软件的主框架是用 C++和 Qt 写的。
    软件有一个插件系统,一般来说插件也会用 C++来写。
    其中一个插件的功能是作为中间层去调用 python 脚本,这样就可以用 python 为这个桌面软件编写插件了。

    整体代码的年代都比较久远了,之前的方案是使用 boost.python 做的,我希望能找到一个功能性和轻量级之间的平衡点。
    12 replies    2018-11-14 01:16:56 +08:00
    scriptB0y
        1
    scriptB0y  
       Nov 13, 2018
    能说说你的需求吗? 我觉得一般在 C++ 中需要脚本语言的话,lua 是比较合适的。
    anonymous256
        2
    anonymous256  
       Nov 13, 2018 via Android   ❤️ 1
    https://blog.csdn.net/VonSdite/article/details/81295056

    C++程序中调用命令行的思路,交给让操作系统执行,应该是可行的。
    thedrwu
        3
    thedrwu  
       Nov 13, 2018 via Android
    用了一大圈,还是 swig 最好用。
    heliumhgy
        4
    heliumhgy  
       Nov 13, 2018 via Android
    裸写 C 扩展。你提到的那俩货性能开销蛮大的。
    htfy96
        5
    htfy96  
       Nov 13, 2018
    FFI 一直都是大坑。如果没有超高性能要求的话可以包装成 RPC,通过 domain socket/TCP 通信,优点是解耦比较彻底
    JerryV2
        6
    JerryV2  
       Nov 13, 2018
    @heliumhgy
    对,使用调用 C API,自己简单包装一下,并不复杂
    Wicked
        7
    Wicked  
       Nov 13, 2018 via iPhone
    搜索“ python c 扩展”,很简单的
    dychenyi
        8
    dychenyi  
       Nov 13, 2018
    swig, cython
    initialdp
        9
    initialdp  
       Nov 13, 2018
    ctypes 挺好用
    wutiantong
        10
    wutiantong  
       Nov 13, 2018
    @heliumhgy 我最近用了一点儿 pybind11,不太明白你说的“性能开销蛮大的”具体是指什么?
    chenstack
        11
    chenstack  
       Nov 13, 2018
    我推荐用 pybind11,使用上对 C++的类友好,用着挺舒服的
    Arnie97
        12
    Arnie97  
       Nov 14, 2018 via Android
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3878 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 61ms · UTC 04:28 · PVG 12:28 · LAX 21:28 · JFK 00:28
    ♥ Do have faith in what you're doing.