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