通过Python脚本调用C++函数

leo*_*vlt 7 c++ python qt word-wrap boost-python

我有一个场景,我在C++类中有一些函数,我希望能够使用python脚本调用它们.假设我有一个功能

void greet(_msg);
    std::cout >> _msg >> std::endl;
Run Code Online (Sandbox Code Playgroud)

我希望能够通过自定义Python调用来调用它并将参数传递给它,例如使用

saySomething("Hello")
Run Code Online (Sandbox Code Playgroud)

作为.py文件,我希望它调用greet函数并传递"Hello"作为参数.

我知道这是一个经过深入讨论的主题,我已经完成了在C++中嵌入python的研究,我已经设法使用标准的Python/C API从python脚本读取值并在Python中运行一个函数来自C++并将参数传递给它,但我似乎无法理解如何实现这一特定结果.

我已经看过ctypes和各种包装库,例如boost:python或swig,但我似乎无法理解他们可以帮助我实现我想要的程度.

mlo*_*kot 5

根据您有兴趣,x或3 x其中Python版本,通过读取扩展和嵌入Python解释器的章节2.X3.X.您只对扩展 Python 感兴趣,因此1.使用C或C++扩展Python将为您提供完整的解释,说明如何实现所需,以便能够从Python脚本调用C++实现的函数.

当然,有许多库和生成器允许你为Python包装C/C++ API(例如Boost.PythonSWIG),但你的案例听起来很简单,为了学习它,IMO更好地熟悉Python C API.即使你使用这些工具,你也经常需要开始使用Python C API,或者至少要理解它.