【发布时间】:2023-03-14 01:05:01
【问题描述】:
现在我正在尝试使用 Cython 将 C 函数加载到 Python 中,类似于此处描述的内容:http://docs.cython.org/src/userguide/external_C_code.html。假设我的 C 文件名为 temp.c,我的 pxd 文件名为 decl.pxd,我的 pyx 文件名为 test.pyx。假设我想从 temp.c 导入一个名为 int my_func(int spam) 的函数:
cdef extern from "temp.c":
int my_func(int spam)
cdef int my_func(int spam)
然后我将 my_func 导入 test.pyx 并尝试使用它:
from decl cimport my_func
my_func(1)
Cython 编译得很好,但是当我尝试使用 Python shell 导入从 test.pyx 构建的“测试”模块时,它会抛出错误并显示“符号 my_func 无法识别”。此外,当我查看 Cython 编译器生成的 html 文件时,您可以在其中查看为 test.pyx 生成的 C 代码,my_func 的 C 文件中的代码不存在,表明 Cython 必须有找不到my_func。
我意识到我没有详细介绍 temp.c 的外观,但是有没有办法可以调试为什么 Cython 显然无法找到 my_func 的源代码?
【问题讨论】:
-
它叫做 test.pyx,而不是 temp.pyx。
-
docs.cython.org/src/reference/…。以“如果您有一些 C 文件...”开头的部分