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