提问人:ckot 提问时间:2/2/2015 最后编辑:ckot 更新时间:1/31/2017 访问量:351
cython 模块引发 ImportError,即使我链接了必要的静态库
cython module raises ImportError even though I'm linking in the necessary static libs
问:
我的cython模块构建良好,但是当我尝试导入它时,出现以下错误:
ImportError: ./pyflite.so: undefined symbol: basic_ff_register
这是我 setup.py。
from distutils.core import setup
from distutils.extension import Extension
from Cython.Distutils import build_ext
ext_modules = [Extension("pyflite",
["pyflite.pyx"],
extra_objects=[
"/usr/local/lib/libflite.a",
"/usr/local/lib/libflite_cmulex.a",
"/usr/local/lib/libflite_usenglish.a",
"/usr/local/lib/libflite_cmu_us_slt.a"])]
setup(
name = 'pyflite',
cmdclass = {'build_ext': build_ext},
ext_modules = ext_modules
)
如您所见,由于库是静态的,因此我不得不将它们添加到而不是extra_objects
libraries
这是让我感到困惑的地方:
nm -o --defined-only /usr/local/lib/*.a | grep 'basic_ff_register'
/usr/local/lib/libflite.a:cst_ffeatures.o:00000000000017a0 T basic_ff_register
这难道不意味着我正在链接的函数吗?libflite.a
任何帮助将不胜感激,
-斯科特
答:
0赞
Carlo Benussi
1/31/2017
#1
尝试颠倒链接静态库的顺序。libflite.a(缺少符号的地方)不应该是第一个。
评论