一起编译python和c ++

时间:2015-06-30 18:00:17

标签: python c++

我基本上想看看是否可以将Python代码编译成C ++程序,以便生成单个二进制文件,然后使用C ++代码中的函数调用(编译的)python代码。

背景:我有一个C ++代码可以完成一些工作并生成我想要绘制的数据。然后,我使用SciPy编写了一个单独的Python脚本,该脚本读取输出数据,处理它并将其绘制到文件中。这一切都按原样运作。

基本上,我想象的是:

void plotstuff() {
    my_python_func(); // This is the python script compiled into the c++ binary
}    

我不需要在python代码和C ++代码之间传递任何东西,除了确保它在同一目录中执行。如果我可以传递字符串参数,它可能会使事情变得更容易,但是再次 - 不是必需的。

这可以实现吗?或者它通常是一个坏主意,我应该坚持让我的C ++和python分开?

2 个答案:

答案 0 :(得分:5)

是:这称为嵌入

最好的起点是the official Python documentation on the topic。有一些示例代码显示如何从C代码调用Python函数。

这是一个非常基本的例子,也来自Python文档:

#include <Python.h>

int
main(int argc, char *argv[])
{
  Py_SetProgramName(argv[0]);  /* optional but recommended */
  Py_Initialize();
  PyRun_SimpleString("from time import time,ctime\n"
                     "print 'Today is',ctime(time())\n");
  Py_Finalize();
  return 0;
}

答案 1 :(得分:0)

从您的C ++代码中创建一个原生扩展(Python 2Python 3),然后让您的Python程序import。然后使用py2exe或您喜欢的平台对应方将Python程序和原生扩展转换为可执行文件。