Python嵌入C++之HelloWorld
Python对C++的嵌入是我学习Python的初衷,所以刚刚看了点Python的语法,我就来到了这一章节的学习。
首先,先看看Python manuals中的一个例程,这个例程在"5.1 Very High Level Embedding"中提到。
#include <Python.h>
/*这里的"Python.h"基本是对所有python头文件的打包,大家可以看其源代码。
基本上,有这个头文件,就一切OK了。*/
int main(int argc, char *argv[])
{
Py_Initialize();
/*其原型为void Py_Initialize()。在使用Python系统之前,必须使用Py_initialize对其初始化。这个函数会将Python的内建系统模块载入并添加系统路径到相应的模块搜索路径中。常常,在这句代码之后,可以见到另一行代码:
if(!Py_IsInitialized() )
{
return (-1);
}
用于检验初始化是否成功。这种样式的代码在com/directx中见多了,不是吗?*/
PyRun_SimpleString("from time import time,ctime/n"
"print 'Today is',ctime(time())/n");
/*把参数中的字符串作为Python代码直接运行,可以比照C++中的嵌入式汇编。其原型为int PyRun_SimpleString(char* command)。返回值为0表示成功,为-1表示有异常。
其执行结果如下:
其中:
from time import time,ctime
表示导入time模块中的time,ctime函数。
*/
Py_Finalize();
/*对应于Py_Initialize()。天生一对,嵌入编程时缺一不可。*/
return (1);
}
实际上,我以为这样子作为HelloWorld比较好:
#include "python.h"
int main(int argc,char** argv)
{
Py_Initialize();
PyRun_SimpleString("print 'Hello world,I am python!'");
Py_Finalize();
return (1);
}