从c ++程序调用python进行分发

c++ python embedded-language

57558 观看

5回复

248173 作者的声誉

我想从我的c ++程序中调用python脚本文件。

我不确定我将分发给谁的人将安装python。

基本上我正在寻找一个我可以使用的.lib文件,它具有类似Apache的分发许可证。

作者: Brian R. Bondy 的来源 发布者: 2008 年 9 月 8 日

回应 5


28

5129 作者的声誉

决定

Boost有一个python接口库,可以帮助你。

Boost.Python的

作者: roo 发布者: 2008 年 9 月 8 日

3

12792 作者的声誉

在C ++应用程序中嵌入Python解释器将允许您使用应用程序运行Python脚本运行Python程序。它还使这些脚本更容易在您的应用程序中调用C ++函数。如果这是你想要的,那么前面提到的Boost库可能就是你想要更容易创建链接。在过去,我使用SWIG生成C ++代码的Python接口。从您的问题中不清楚您是否希望Python脚本调用您的C ++程序,或者您是否只是想让C ++调用Python。

许多Python函数都使用未嵌入Python解释器的模块。如果您的Python脚本调用这些函数,那么您需要让您的用户安装Python或在您的应用程序中包含python运行时文件。它取决于您在Python脚本中导入的模块。

作者: David Dibben 发布者: 2008 年 9 月 8 日

3

7350 作者的声誉

Boost可能是最好的选择,但是如果你想要一些更独立的东西,并且如果这是用于Windows(这似乎是可行的,因为他们是最不可能安装Python的人),那么你可以使用py2exe来创建一个DLL,其入口点适合COM对象。然后,您可以通过COM与库进行交互。(显然,这对于跨平台解决方案来说根本不是很有用)。

作者: Tony Meyer 发布者: 2008 年 9 月 8 日

58

10906 作者的声誉

我想从我的c ++程序中调用python脚本文件。

这意味着您希望在您的C ++应用程序中嵌入Python。如在另一个应用程序嵌入Python中所述

嵌入Python类似于扩展它,但并不完全。不同之处在于,当你扩展Python时,应用程序的主程序仍然是Python解释器,而如果嵌入Python,主程序可能与Python无关 - 相反,应用程序的某些部分偶尔会调用Python解释器运行一些Python代码。

我建议您首先在另一个应用程序中嵌入Python。然后参考以下示例

  1. 在C / C ++中嵌入Python:第一部分

  2. 在C / C ++中嵌入Python:第二部分

  3. 在多线程C / C ++应用程序中嵌入Python

如果你喜欢Boost.Python,你可以访问以下链接:

  1. 使用Boost.Python嵌入Python第1部分
作者: bhadra 发布者: 2008 年 11 月 30 日

0

1532 作者的声誉

有趣的是,还没有人提到过pybind11。从他们的文件:

pybind11是一个轻量级的仅限头的库,它在Python中公开C ++类型,反之亦然,主要是为了创建现有C ++代码的Python绑定。它的目标和语法类似于David Abrahams的优秀Boost.Python库:通过使用编译时自省推断类型信息来最小化传统扩展模块中的样板代码。[...]自创建以来,这个库已经在很多方面超越了Boost.Python,在许多常见情况下导致了更简单的绑定代码。

具体来说,调用Python函数(称为嵌入)就像这样简单(取自文档):

#include <pybind11/embed.h> // everything needed for embedding
namespace py = pybind11;

int main() {
    py::scoped_interpreter guard{}; // start the interpreter and keep it alive
    py::print("Hello, World!"); // use the Python API
}
作者: ingomueller.net 发布者: 2018 年 11 月 15 日
32x32