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