在编写Cython实现文件(.pyx)时,是否可以定义Cython将作为扩展模块创建的共享库的__attribute__((__constructor__))
or __attribute__((__destructor__))
函数?
将这些作为原型声明放在头文件中是没有意义的,除非你还在C文件中定义它们并编译它以使函数实现可以cimport
编辑...但是函数的__constructor__
- 将适用于 编译库,不到Cython编译的那个。
请注意, 指的是__cinit__
或__dealloc__
的扩展类型,而是指特定于C的特定功能在库加载或卸载时。
我不清楚使用CPython API构建的模块的要求(例如Py_InitModule
)是否阻止模块将任何其他函数构建为在加载库时自动调用的入口挂钩(或者像析构函数一样卸载)。