1
我必须为大型C库创建一个python包装。我试图使用ctypes模块来做到这一点,但是当我尝试加载共享库时出现错误。这里是我正在运行的Python代码。需要帮助使用Ctypes加载共享库
import ctypes
praatlib_path = '/n/banquet/da/martega/Programming/libs/libpraat.so'
praatlib = ctypes.CDLL(praatlib_path)
print 'Hello, World!'
不幸的是,我得到了下面的错误,我不知道足够的调试:
Traceback (most recent call last):
File "./praatlib.py", line 9, in <module>
praatlib = ctypes.CDLL(praatlib_path)
File "/usr/local/lang/python-2.7.3/lib/python2.7/ctypes/__init__.py", line 365, in __init__
self._handle = _dlopen(self._name, mode)
OSError: /n/banquet/da/martega/Programming/libs/libpraat.so: undefined symbol: _Znaj
谁能解释这是什么意思,我怎么能去修复它?
万一它很有用,下面是构建共享库的Makefile中的命令。
gcc -shared -Wl,-soname,libpraat.so -o libpraat.so `find num glpk audio stat LPC FFNet dwtools artsynth fon dwsys GSL kar FLAC mp3 library -name "*.o"`
编辑:我同,而不是C++ G ++重新编译它。该修正原来的错误,但现在我发现了以下错误这是我可能得解决我自己:
Traceback (most recent call last):
File "./praatlib.py", line 9, in <module>
praatlib = ctypes.CDLL(praatlib_path)
File "/usr/local/lang/python-2.7.3/lib/python2.7/ctypes/__init__.py", line 365, in __init__
self._handle = _dlopen(self._name, mode)
OSError: /n/banquet/da/martega/Programming/libs/libpraat.so: undefined symbol: Melder_hasError
谢谢!我会用我的结果重新编译库和报告。 – martega 2012-08-14 12:32:30