我一直在尝试通过CFFI在我的 python 项目中使用一些 C 代码,但是当我尝试构建然后导入构建的库时,{{1 }},出现以下错误:
import _chebyshev_cffi
我不确定这里出了什么问题,我无法找到有关此错误的信息,我将不胜感激。 我正在使用MacOS和适用于python的anaconda发行版,cffi似乎已正确安装。
编辑:我可能应该补充一点,我实际上期望的功能在其之前不应带有下划线。它应该是 ”
ImportError: dlopen(/Users/Username/Documents/code project/_chebyshev_cffi.cpython-35m-darwin.so, 2): Symbol not found: _elementary_clenshaw_step_real
Referenced from: /Users/Username/Documents/code project/_chebyshev_cffi.cpython-35m-darwin.so
Expected in: flat namespace
而非elementary_clenshaw_step_real
。
这是源代码:
_elementary_clenshaw_step_real
答案 0 :(得分:0)
问题是用void __inline
声明了功能。我不完全确定为什么,但是似乎同时使该函数“强制内联”(这样编译后就没有主体)和“非静态”(这样就带有一个外部符号)。这可能是导致问题的原因。如果您删除__inline
或在static
前面添加void __inline
,那么一切都会按预期进行。如果您仅询问有关C的问题,则可能会获得更多信息。