Python如何嵌入C/C++进行开发?


你说的是在C/C++程序中调用Python吧 。这个实现起来非常简单 。只需要在头文件中引入Python.h文件 。然后在编译的时候链接到Python库即可 。下面我简单介绍一下 。以Linux系统为例 。感兴趣的朋友可以尝试一下:
01安装python-devel插件
首先 。安装python-devel插件 。这个插件包含有C/C++程序调用Python的头文件和库文件 。在编写和编译程序的时候会用到 。安装的话 。直接在终端输入命令“yum install -y python-devel”即可 。默认情况下安装的是Python2 。需要安装Python3.x的话 。运行命令“yum install -y python3x-devel”即可:

Python如何嵌入C/C++进行开发?

文章插图
02C/C++程序调用Python
插件安装完成后 。我们就可以直接编写C/C++程序来调用Python了 。测试代码如下 。这里我简单输出了一条Python语句 。基本思想先初始化 。然后调用Python 。最后再结束 。整个流程非常简单 。也非常容易理解:
Python如何嵌入C/C++进行开发?

文章插图
编写完成后 。wq保存程序 。接着在终端运行“gcc -lpython2.7 test.c -o test”命令(这里替换成你的C/C++文件) 。即可正常编译程序 。运行效果如下 。和预期的一样:
Python如何嵌入C/C++进行开发?

文章插图
当然 。你也可以直接调用py文件(脚本) 。传入参数 。取得返回结果 。这里我简单编写了一个add求和函数 。输入2个参数 。返回一个结果:
Python如何嵌入C/C++进行开发?

文章插图
C/C++调用代码如下 。基本流程和前面一样 。先初始化 。然后加载模块 。调用函数 。传入参数 。最后再取得执行结果 。代码量有些多 。但理解起来不难:
Python如何嵌入C/C++进行开发?

文章插图
至此 。我们就完成了在C/C++程序中调用Python 。总的来说 。整个过程非常简单 。只要你有一定C/C++基础 。熟悉一下上面的示例和代码 。很快就能掌握的 。Windows环境类似 。也需要导入对应头文件和库 。网上也有相关教程和资料 。介绍的非常详细 。感兴趣的话 。可以搜一下 。希望以上分享的内容能对你有所帮助吧 。也欢迎大家评论、留言进行补充 。
其他观点:
如果你想把Python嵌入C C++中是比较简单的事情 。你需要的是在VC中添加Python的include文件目录和lib文件目录 。下面我们来看下如何把Python
如果你想把Python嵌入C/C++中是比较简单的事情 。你需要的是在VC中添加Python的include文件目录和lib文件目录 。下面我们来看下如何把Python嵌入C/C++中 。
VC6.0下 。打开 tools->options->directories->show directories for 。将Python安装目录下的inlude目录添加到inlude files项中 。将libs目录添加到library files项中 。
VC2005下 。打开tools->options->项目和解决方案->VC++目录 。然后做相同工作 。
代码如下:
在debug下执行出错 。“无法找到python31_d.lib文件” 。后查到原因是:在debug下生成必须要有python31_d.lib文件 。否则只能在release下生成
#include <python.h>
int main()
{
Py_Initialize();
PyRun_SimpleString(\"Print 'hi, python!'\");
Py_Finalize();
return 0;
}
Py_Initialize函数原型是:void Py_Initialize()
把Python嵌入C/C++中时必须使用该函数 。它初始化Python解释器 。在使用其他的Python/C API之前必须先调用该函数 。可以使用Py_IsInitialized函数判断是否初始化成功 。成功返回True 。
PyRun_SimpleString函数原型是int PyRun_SimpleString(const char *command) 。用来执行一段Python代码 。
注意:是否需要维持语句间的缩进呢?
Py_Finalize函数原型是void Py_Finalize() 。用于关闭Python解释器 。释放解释器所占用的资源 。
PyRun_SimpleFile函数可以用来运行\".py\"脚本文件 。函数原型如下:
int PyRun_SimpleFile(FILE *fp, const char *filename);
其 中fp是打开的文件指针 。filename是要运行的python脚本文件名 。但是由于该函数官方发布的是由visual studio http://2003.NET编译的 。如果使用其他版本的编译器 。FILE定义可能由于版本原因导致崩溃 。同时 。为简便起见可以使用如下方式来代替该函数:
PyRun_SimpleString(\"execfile(‘file.py’)\"); //使用execfile来运行python文件
Py_BuildValue()用于对数字和字符串进行转换处理 。变成Python中相应的数据类型(在C语言中 。所有Python类型都被声明为PyObject类型) 。函数原型如下:
PyObject *Py_BuildValue(const char *format, …..);

推荐阅读