struct PyMethodDef {
const char *ml_name; /* 内置函数/方法的名称 */
PyCFunction ml_meth; /* 实现它的C函数 */
int ml_flags; /* METH_xxx标志的组合,它主要描述C func所期望的参数 */
const char *ml_doc; /* 文档或为空 */
};
- 用一个
PyMethodDef 结构体列表去给出所有需要暴露的函数的元数据,对第一步中所定义的函数进行映射以及说明,让解析器知道文怎去构造一个Python调用; - 用一个
PyModuleDef 去给出此模块的元数据; - 给出一个当Python解释器加载该模块时候的构造函数
PyInit_<Module_name> , 其中Module_name 表示该模块的名字,也就是在PyModuleDef 中给出的模块名,例子中是dummy ,那么这个函数名最后就是PyInit_dummy 。
使用C语言编写Python模块-引子【转】 - sky-heaven - 博客园 (cnblogs.com)
typedef struct PyModuleDef{
PyModuleDef_Base m_base;
const char* m_name;
const char* m_doc;
Py_ssize_t m_size;
PyMethodDef *m_methods;
struct PyModuleDef_Slot* m_slots;
traverseproc m_traverse;
inquiry m_clear;
freefunc m_free;
}PyModuleDef;
|