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

在Cython的“Hello World”和在这里的C数学库中调用一个函数的例子之后,我真正想做的是将我自己的C代码放在一个单独的文件中,并从Cython中使用它。 在此之后,我修改了setup.py文件:

sourcefiles = ['hello2_caller.pyx', 'hello2.c']

这是hello2.c(主要是在那里单独编译和测试它---虽然该产品不适用于测试:

#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'不起作用。 你能指点我一个有效的例子,或者解释我做错了什么。 谢谢。


感谢来自Cython用户列表的帮助。
我写在这里。

底线:这只是一个警告,并非由f()的声明所固定,但编译后的.so起作用。 我仍然不确定如何为Cython提供.h文件,或者是否有更好的方法来执行此操作。

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

链接地址: http://www.djcxy.com/p/49553.html

上一篇: Cython: call function from external C file

下一篇: Add/Edit Entities in google app engine java local datastore