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

标签 c++ python qt boost-python word-wrap

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

void greet(_msg);
    std::cout >> _msg >> std::endl;

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

saySomething("Hello")

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

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

我看过 ctypes 和各种 wrappin 库,例如 boost:python 或 swig,但我似乎无法理解它们能在多大程度上帮助我实现我想要的。

最佳答案

取决于您感兴趣的 Python 版本,2.x 或 3.x, 通读 Extending and Embedding the Python Interpreter 一章 2.x3.x .您只对扩展 Python 感兴趣,因此请参阅1。用 C 或 C++ 扩展 Python 将为您提供完整的解释,说明如何实现您需要的功能,以便能够从 Python 脚本调用以 C++ 实现的函数。

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

关于c++ - 通过 Python 脚本调用 C++ 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13498445/

相关文章:

python - Flask Hello World程序无法运行404找不到错误

Python:优先级队列不保持相同优先级元素的顺序

c++ - 单击时 QML 更改 View

c++ - qProcess写关闭写 channel 后

C++类和对象——内存

c++ - 使用 C++ 和 Qt 解析 xml 文件

c++ - boost 日志 : how to filter by current thread id

c++ - 对有限数量的命令进行快速语音识别

python - 如何加入字符串列表?

javascript - QByteArray 到 Javascript Buffer 或 QML 中的可序列化类型