【发布时间】:2020-07-27 12:37:16
【问题描述】:
假设我们正在用 C 语言编写一个 CPython 扩展模块。
定义扩展时,我们需要提供PyMODINIT_FUNC PyInit_<module_name>(void)。此声明中没有指定本地调用约定。
无论是在 Linux 上还是在 Windows 上,扩展开发人员如何确保 PyInit_ 函数使用正确的调用约定编译,以便解释器在运行时成功调用它? Python 头文件中是否有一些魔法可以为我们解决这个问题?还是别的什么?
同样的问题也适用于扩展模块中包含的原生函数,并且暴露给 Python 包装为函数对象。我们如何确保以与 Python 解释器调用约定兼容的方式编译它们?
【问题讨论】:
标签: c cpython calling-convention