Fork me on GitHub

Windows下为Python编译C扩展模块

工具:CodeBlocks 13.12

 

步骤


 

1 打开CodeBlocks新建工程:Shared library   --   c    --  sample    [默认GUN GCC Complier就行]

  右键sample目录,Build options添加以下三项内容:

  Linker settings  -- add  --  C:\Python34\libs\python34.lib     [库文件]

  Search directories  --  Linker  --  C:\Python34\libs

  Search directories  --  Compiler  --  C:\Python34\include      ['Python.h'等头文件]


 

2 编辑main.c文件

#include <stdio.h>
#include <Python.h>

int c_add(int x, int y)     // 正常的C格式
{
    return x+y;
}

static PyObject *add(PyObject *self, PyObject *args)   // 以下都是Python.h中的类型、方法
{
    int a, b;
    if(!PyArg_ParseTuple(args,"ii", &a, &b))
    {
        return NULL;
    }
    return (PyObject*)Py_BuildValue("i", c_add(a,b));
}

/*模块方法表*/
static PyMethodDef AddMethods[] = { {"plus", add, METH_VARARGS, "add a and b"}, //add方法在模块中的名字 { NULL, NULL, 0, NULL} };
/*模块结构*/
static struct PyModuleDef addmodule = { PyModuleDef_HEAD_INIT, "sample", //模块名 "A add module", //文档字符串 -1, //返回状态 AddMethods       // 上面的方法表 }; PyMODINIT_FUNC PyInit_add(void) { return PyModule_Create(&addmodule); }

3 编译

在/bin/Debuge/目录下的libsample.dll就是我们所需要的文件,

重命名sample.pyd,放到import可以找到的地方,就可以在python中import sample了(一般放在C:\Python34\DLLs\中)

 

更具体的看CookBook官方文档

 

posted @ 2016-04-29 14:48  Roronoa__Zoro  阅读(605)  评论(0编辑  收藏  举报