C++嵌入PythonAPI解析

struct PyMethodDef { 
    const char  *ml_name;   /* 内置函数/方法的名称 */ 
    PyCFunction ml_meth;     /* 实现它的C函数 */ 
    int         ml_flags;   /* METH_xxx标志的组合,它主要描述C func所期望的参数 */ 
    const char  *ml_doc;     /* 文档或为空 */ 
}; 
  1. 用一个PyMethodDef结构体列表去给出所有需要暴露的函数的元数据,对第一步中所定义的函数进行映射以及说明,让解析器知道文怎去构造一个Python调用;
  2. 用一个PyModuleDef去给出此模块的元数据;
  3. 给出一个当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;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值