编译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++程序中,检查这个问题: