gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 08:16:10 32 4
gpt4 key购买 nike

在 Cython 的“Hello World”和 C 数学库中调用函数的示例之后 here ,我真正想做的是将我自己的 C 代码放在一个单独的文件中,并在 Cython 中使用它。关注 this ,我修改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 用户列表的帮助 here .
我的文章 here .

底线:这只是一个警告,不是由 f() 的声明修复的,但编译后的 .so 有效。我仍然不确定您将如何向 Cython 提供 .h 文件,或者是否有更好的方法来做到这一点。

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

关于Cython:从外部 C 文件调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4519251/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com