现在的位置: 首页 > 编程语言 > 正文

[原]用C扩展python

2018年08月29日 编程语言 ⁄ 共 892字 ⁄ 字号 评论关闭
备了个忘

1.创建应用程序代码
2.利用样板来包装代码
    1.包含
Python 的头文件。 
     
  #include "Python.h" //需将python安装目录下的include文件夹包含进工程
    2.为每个模块的每一个函数增加一个型如
PyObject* Module_func()的包装函数。
    包装函数格式:
static PyObject *Extest_fac(PyObject *self, PyObject
*args)
{
int res; //parse result
int num; //arg for fac()
PyObject *retval;
res = PyArg_ParseTuple(args, "i",
&num);//转换从python传入的参数为整数
if(!res)//type error
{
return NULL;
}
res = fac(num);//函数调用
retval = (PyObject *)Py_BuildValue("i",
res);//将res从c的int类型转换为python对象类型
return retval;
}      
  
    3.为每个模块增加一个型如
PyMethodDef ModuleMethods[]的数组。 
     
  static PyMethodDef
ExtestMethods[] = {
{"fac", Extest_fac, METH_VARARGS},
{"doppel", Extest_doppel, METH_VARARGS},
{NULL, NULL},
};
    4.增加模块初始化函数 void
initModule() 
void initExtest()
{
Py_InitModule("Extest", ExtestMethods);
}
3.编译与测试
    1.新建setup.py
from distutils.core import setup, Extension
MOD = 'Extest'
setup(name = MOD, ext_modules = [Extension(MOD, sources =
['Extest.c'])])
    2.python setup.py build
--compiler=mingw32

抱歉!评论已关闭.