make python module with c

 

//bird.c
#include <Python.h>
#include <stdio.h>

void fly(const char *name) {
    printf("%s is flying.\n", name);
}

static PyObject *bird_fly(PyObject *self, PyObject *args) {
    const char *name;
    if (!PyArg_ParseTuple(args, "s", &name)) return NULL;
    fly(name);

    Py_INCREF(Py_None);
    return Py_None;
}

static PyMethodDef bird_methods[] = {
    { "fly", bird_fly, METH_VARARGS, "Bird fly" },
    { NULL, NULL, 0, NULL }
};

PyMODINIT_FUNC initbird(void) {
    PyImport_AddModule("bird");
    Py_InitModule("bird", bird_methods);
}

 

编译
gcc -o bird.so `python-config --cflags` `python-config --libs` -shared -fPIC bird.c

 

#main.py
import bird

bird.fly("fwd")

 

位置关系
$ ls
bird.c  bird.so  main.py

$ python --version
Python 2.7.17

运行
$ python main.py
fwd is flying.

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值