Python的库非常丰富,如果能在C中使用Python的一些库,无疑是很让人兴奋的,下面我们就将在C中使用Pyhton的urllib模块和logging模块。
在C中调用Python需要包含整个Python的运行时库,链接模型如下:
在C/C++中嵌入Python代码是非常简单的,下面是代码模板:
#include <Python.h>
int main(int argc,char** argv)
{
Py_SetProgramName(argv[0]);
Py_Initialized();
/* Do all your stuff in side here... */
Py_Finalize();
return 0;
}
注意“Pyhon.h"头文件需要首先被包含。
我们通过下面几个例子学习如何嵌入Python代码:
一:urllib
Python关于网络方面的库相当丰富,我们将在C中调用urllib.urlopen获取网页内容。
url.pyx文件:
import urllib
cdef public char * open(char * url):
content=urllib.urlopen(url).read()
return content
public是Cython的关键字,代表这个函数被导出,所以Cython会自动创建url.c和url.h,url.h就是用来被C/C++代码包含的,Cython做的非常智能。
Python中的字符串对应的就是C中的char*,所以我们参数为char*,同时返回内容也为char*,Cython将自动帮我们完成类型转换。
我们来看看Cython自动产生的url.h头文件,我们将在主文件中包含它。
url.h文件:
#ifndef __PYX_HAVE__url
#define __PYX_HAVE__url
#ifndef __PYX_HAVE_API__url
#ifndef __PYX_EXTERN_C
#ifdef __cplusplus
#define __PYX_EXTERN_C extern &