Python代码在实现某些功能的时候非常方便,如果能够将Python代码与C++程序结合起来,那么一定会使Problem Solving方便许多(比如,游戏脚本系统)~
从学完Python开始就一直想研究一下C++内嵌Python是怎么回事,可是每次都坚持不下来。。。今天上校内,偶然间看到同学求助,怎么实现输入表达式输出结果~我想到了Python的builtin函数eval,正好借这个机会研究一下怎么实现C++调用Python函数!
假定您的系统中已经安装了Python,我使用的版本是2.6~
1.配置IDE。
我用的是VS2008,只需要将Python安装路径下的include文件夹和libs文件夹添加到C++目录中即可。步骤是:Tools -> Options -> Project & Solution -> VC++ Dir选择右上的Dropdown List,分别将include文件夹和libs文件夹添加到include和lib项中。
2.编写Python脚本。
为了完成自动计算值的功能,我写了如下的脚本(文件名是python_code.py):
将这个文件与C++程序文件放到同一目录下,这样保证编译器可以根据相对路径找到。
3.Python嵌入的方式 - 高级vs低级
接下来进入C++内嵌Python函数的关键部分了。根据官方的帮助文档,有两个类型的Python调用,High Level与Low Level。High Level就是调用者不需要管理与Python相关的内存,只有3行代码即可,分别是Py_Initialize()来初始化解释器(注意,此时程序仍然是由C++的编译器进行编译),调用PyRun_SimpleString()其中参数是要执行的Python代码,如果是一个确定的Python文件,那么我们可以调用PyRun_SimpleFile()直接执行Python文件。最后调用Py_Finalize()方法结束解释器工作。
使用High Level对程序员的要求非常少,基本就是会写Python代码就会在C++中调用Python的方法,但是弊端就是当