Cython:从外部C文件调用函数

Cython:从外部C文件调用函数,cython,Cython,在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 wor

在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;
}
我得到:

In file included from hello2_caller.c:219:
hello2.c:3: warning: function declaration isn’t a prototype

因此,我想我在某种程度上无法提供标题..尽管只给setup.py输入像'hello2.h'这样的标准标题不起作用。你能给我举个工作示例或解释我做错了什么吗。谢谢。

感谢Cython用户列表的帮助。
我的笔迹

一句话:这只是一个警告,并不是通过声明f()来修复的,但是编译的.so可以工作。我仍然不确定如何向Cython提供一个.h文件,或者是否有更好的方法


还有几个错误:应该是#include,并且不要在sourcfiles中列出.c文件。

yeu是否尝试使用“hello2..h”中的
cdef extern指定头文件:
.AFAIK
extern
行不应该指向c文件,而是指向头文件..oo.Nice one!.oo。
In file included from hello2_caller.c:219:
hello2.c:3: warning: function declaration isn’t a prototype