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.o3、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
相关文章推荐
- c++操作EXCEL
- C++ BOOST库 条件变量[多线程通信]机制 简单介绍
- HDU 1312 Red and Black(dfs)
- C++中Format的用法
- 爬爬爬之路:C语言(四) 一维数组篇
- The differences between new(delete) and malloc(free) in c/c++
- C++第六课 函数1
- c语言实现模拟发送报文改进版(添加程序自动打log)
- Leecode_Count Primes
- C++ 用户自定义类型
- Leetcode NO.8 String to Integer (atoi)
- C语言:标准输入读取几行输入。每行输入都要打印到标准输出上,前面加上行号。行号不能有限制
- C语言:编写程序求解:有1,2,3,4,个数字,将组成互不相同且无重复数字出现的三位数打印出来
- C语言:编这样一个程序,用户输入10个整数,程序找出其中的最大值和最小值
- C语言:编写猜数字游戏,猜一个数字,一直到猜中为止
- C语言:编写折半查找函数,即二分法
- C++入门学习——explicit关键字的作用
- 【C语言】 猜数字游戏
- 几种常见排序算法的C++描述
- C语言字符串