如何在未安装Python的系统上执行嵌入C++代码的Python代码
我正在尝试用C++创建一个简单的游戏,并在其中嵌入Python代码。我使用了Python/C API来实现这个功能。
我有两个目标想要实现:
1) 应用程序应该能够在没有安装Python的电脑上运行。
2) 应用程序应该是一个独立的可执行文件(.exe)。
举个例子,下面这段简单的代码只有在系统上已经安装了Python的情况下才能工作:
#include <Python.h>
#include <conio.h>
#include <stdio.h>
int main()
{
char pySearchPath[] = "Python27";
Py_SetPythonHome(pySearchPath);
Py_Initialize();
PyRun_SimpleString("print 'Hello World'");
PyRun_SimpleString("for i in range(5):\n"
"\tprint i,\n");
Py_Finalize();
getch();
return 0;
}
Python必须安装在电脑上,或者这些文件应该放在可执行文件的目录下:
python27.dll
Python27\
DLLs\ (contents of DLLs folder)
Lib\ (contents of Lib folder)
问题:我该如何将这些文件包含/添加/绑定到我的.exe
中,以便我的应用程序可以在没有安装Python的系统上运行?我希望能有一个独立的可执行文件。这可能吗?如果可以的话,请给我一些实现的提示。我已经花了很多时间在网上搜索,但不幸的是没有找到有用的信息。
可能还有其他方法可以解决这个问题,但我不太确定。例如,以下方法是否可行?
Python代码 ----转化----> 字节码 -----> 本地代码 -------> 导入到程序中
更新:我用Cython生成了.pyd文件(.dll)。我该如何从中生成.h文件,或者在我的应用中调用一些函数(如果可能的话)?
谢谢。
1 个回答
是的,你可以在C++中嵌入Python代码。
谷歌给我提供了两个链接,我觉得对你会有帮助。我不确定你是否已经知道这些链接,因为你在提问时没有提到你做过的研究。
http://www.codeproject.com/Articles/11805/Embedding-Python-in-C-C-Part-I 这个链接有关于这个主题的两部分教程。
http://realmike.org/blog/2012/07/05/supercharging-c-code-with-embedded-python/ 这个链接也在讨论同样的话题。
通常来说,在回答中粘贴外部链接是不太推荐的。但很遗憾,你的问题答案太长了,我不得不在这里提供这些链接。对此我感到抱歉。为了保险起见,你应该从这些链接下载整个教程,以免将来如果教程下线了你会后悔!