Hit9 Blog Wiki Project Links Archives Resumé
Page: First UP Pre Next Back

Python扩展(一)

Fork me on GitHub

允许转载, 但转载请注明出处

Date:2012-12-30

ubuntu下开发的话,需要安装python-dev

sudo apt-get install python-dev

spammodule.c:

#include <Python.h>

PyObject* add(PyObject* self, PyObject* args) //必须有self参数
{
    int x, y, z; 
    if (!PyArg_ParseTuple(args, "i|i", &x, &y))  //解析参数元组,取出整数赋值给x,y
        return NULL; 
    z = x+y; 
    return Py_BuildValue("i", z); //建立一个整数,值是z
}

static PyMethodDef spamMethod[] =   //方法列表
{
    {
        "add", add, METH_VARARGS, "add"
    }, 
    {
        NULL, NULL
    }
}; 

void initspam() //初始化模块
{
    PyObject* m; 
    m = Py_InitModule("spam", spamMethod); 
}

编译链接:

gcc -fpic -c -I /usr/include/python2.7/ spammodule.c 

gcc -shared -o spam.so  spammodule.o   # spam.so即我们的模块

然后在该目录下:

>>> import spam 
>>> spam.add(1,2)
3

Support:mkdwiki