在 Cython 的“Hello World”和在此处调用 C 数学库中的函数的示例之后,我真正想做的是将我自己的 C 代码放在一个单独的文件中并从 Cython 使用它。在此之后,我修改 setup.py 文件:
sourcefiles = ['hello2_caller.pyx', 'hello2.c']
这是 hello2.c (main 只是为了单独编译和测试它——尽管该产品不存在于测试中:
#import <stdio.h>
void f() {
printf("%s", "Hello world!\n");
}
int main(int argc, const char* argv[]) {
f();
return 0;
}
这是 hello2_caller.pyx
cdef extern from "hello2.c":
void f()
cpdef myf():
f()
我得到:
In file included from hello2_caller.c:219:
hello2.c:3: warning: function declaration isn’t a prototype
因此,我想我无法以某种方式提供标头.. 尽管仅向 setup.py 提供像“hello2.h”这样的标准标头是行不通的。您能否指出一个可行的示例或解释我做错了什么。谢谢。