您的位置:首页 > 编程语言 > C语言/C++

C语言实现的Python扩展模块

2015-10-13 14:23 489 查看
file: sample.c#include <Python.h>//C functionint add(int arg1, int arg2){return arg1 + arg2;}//add wrapped functionstatic PyObject* wrap_add(PyObject *self, PyObject *args){//Convert the python input objects into C objectsint arg1, arg2;if(!PyArg_ParseTuple(args, "ii", &arg1, &arg2))return NULL;//Call c functionint result = add(arg1,arg2);//wrap the result from c function to python object.return (PyObject*)Py_BuildValue("i", result);}//define the PyMethodDef methodsstatic PyMethodDef wrap_methods[] ={{"add", wrap_add, METH_VARARGS},{NULL, NULL}};//initilization functionPyMODINIT_FUNC initsample(void){Py_InitModule("sample",wrap_methods);}注意:C文件名sample和PyMODINIT_FUNC initsample(void)以及  Py_InitModule("sample"中的红色部分必须一致。1、编码:上述代码中红色部分是需要根据需求进行修改的,其他部分是固定不变的。2、编译:
gcc -fpic -c -I /usr/include/python2.7 test.cgcc -shared -o test.so test.o
3、python运行在python命令行中执行:
>>> import test>>> test.add(1,2)
参考: http://www.ibm.com/developerworks/cn/linux/l-pythc/index.html http://bbs.chinaunix.net/thread-1593255-1-1.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: