c语言编译成python库_Python如何编译出C语言的扩展

1. 编写两个文件, .c的源码文件, 内容可参考如下:#include

#include "Python.h"

int fac(int n) {

if (n < 2) return 1;

else return n * fac(n - 1);

}

static PyObject* fac_fac(PyObject* self, PyObject* args) {

int num;

if (!PyArg_ParseTuple(args, "i", &num)) {

return NULL;

}

return (PyObject*)Py_BuildValue("i", fac(num));

}

static PyMethodDef facMethods[] = {

{"fac", fac_fac, METH_VARARGS},

{NULL, NULL},

};

void initfac() {

Py_InitModule("fac", facMethods);

}

int main() {

return 0;

}

2. 后面就是利用python的distutils模块编译出C的SO库,文件名称为setup.py, 内容如下:from distutils.core import setup, Extension

setup(name = "fac", ext_modules = [Extension("fac", sources = ["fac.c"])])

3. python setup.py build 会编译出产物到 build/ 下面, 后面在运行 sudo python setup.py install, 就会把so库安装到 /usr/local/lib/python2.7/dist-packages 下面, 此时这里就有一个 fac.so 文件, 如果你的模块名称是 fac 的话。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值