根据文档,可以使用从 Cython 生成的 C 头文件。我已经Hello World毫无问题地遵循了这个例子,现在我想尝试一些不同的东西。我想使用公共声明来使用自定义方法。我的代码结构如下:
你好.pyx
cdef public void say_hello():
print("Hello World")
Run Code Online (Sandbox Code Playgroud)
设置文件
from distutils.core import setup
from distutils.extension import Extension
from Cython.Distutils import build_ext
ext_modules = [
Extension("hello", ["hello.pyx", "main.c"]),
]
setup(
name='Hello app',
cmdclass={'build_ext': build_ext},
ext_modules=ext_modules
)
Run Code Online (Sandbox Code Playgroud)
主文件
#include "hello.h"
int main(void){
say_hello();
}
Run Code Online (Sandbox Code Playgroud)
在main.c作为测试文件以验证该say_hello()方法按预期工作。构建安装文件python3 setup.py build_ext会产生以下输出。
running build_ext
skipping 'hello.c' Cython extension (up-to-date)
building 'hello' extension
x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall …Run Code Online (Sandbox Code Playgroud)