Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
编译python和c++;在一起 我基本上是在看是否可以将python代码编译成C++程序,这样就可以生成一个二进制,然后调用(编译)的python代码,用C++代码中的函数调用。 背景技术:我有一个C++代码,它能完成一些工作并生成我想绘制的数据。然后,我使用SciPy编写了一个单独的Python脚本,读取输出数据,对其进行处理,并将其打印到文件中。这一切都按原样进行_Python_C++ - Fatal编程技术网

编译python和c++;在一起 我基本上是在看是否可以将python代码编译成C++程序,这样就可以生成一个二进制,然后调用(编译)的python代码,用C++代码中的函数调用。 背景技术:我有一个C++代码,它能完成一些工作并生成我想绘制的数据。然后,我使用SciPy编写了一个单独的Python脚本,读取输出数据,对其进行处理,并将其打印到文件中。这一切都按原样进行

编译python和c++;在一起 我基本上是在看是否可以将python代码编译成C++程序,这样就可以生成一个二进制,然后调用(编译)的python代码,用C++代码中的函数调用。 背景技术:我有一个C++代码,它能完成一些工作并生成我想绘制的数据。然后,我使用SciPy编写了一个单独的Python脚本,读取输出数据,对其进行处理,并将其打印到文件中。这一切都按原样进行,python,c++,Python,C++,基本上,我在想象: void plotstuff() { my_python_func(); // This is the python script compiled into the c++ binary } 我不需要在Python代码和C++代码之间传递任何东西,除非确保它在同一目录中执行。如果我可以传递字符串参数,可能会让事情变得更容易,但同样,这不是必需的 这能做到吗?或者,这通常是个坏主意,我应该坚持让我的C++和Python分开?< /p> < p>从C++代码中

基本上,我在想象:

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

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


这能做到吗?或者,这通常是个坏主意,我应该坚持让我的C++和Python分开?< /p> < p>从C++代码中生成一个本机扩展(或),并拥有你的Python程序<代码>导入< /代码>。然后使用或您最喜欢的平台的对应项将Python程序和本机扩展转换为可执行文件。

是:这称为嵌入

最好的出发点是。有一些示例代码展示了如何从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;
}
#包括
int
main(int argc,char*argv[])
{
Py_SetProgramName(argv[0]);/*可选,但建议使用*/
Py_初始化();
PyRun_SimpleString(“从导入时间开始,ctime\n”
“打印“今天是”,ctime(time())\n”);
Py_Finalize();
返回0;
}

查看Python/C API参考:您试图做的是所谓的嵌入。这意味着您的应用程序的某些部分偶尔会调用Python解释器来运行一些Python代码。尽管应用程序本身与Python无关。这看起来像是我想要使用的。问题-当编译所有的东西时,我如何将我的Python脚本包含在C++可执行文件中(而不是在两个分开的文件中)?我是否应该简单地写另一个函数,它将Python完整脚本作为字符串返回,或者有更优雅的方式(G++选项)?@ KjFFGU,以查看如何将任意文件(例如,Python脚本)嵌入到C++程序中,检查这个问题: