为什么会出现此错误“ ImportError:dlopen(...):未找到符号”?当我在python上导入我的库时

时间:2020-06-20 21:58:28

标签: python importerror python-cffi

我一直在尝试通过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

1 个答案:

答案 0 :(得分:0)

问题是用void __inline声明了功能。我不完全确定为什么,但是似乎同时使该函数“强制内联”(这样编译后就没有主体)和“非静态”(这样就带有一个外部符号)。这可能是导致问题的原因。如果您删除__inline或在static前面添加void __inline,那么一切都会按预期进行。如果您仅询问有关C的问题,则可能会获得更多信息。