загрузка ctypes c совместно использовала библиотеку, которая имеет зависимости

На Linux у меня есть совместно использованная библиотека c, которая зависит от другого, освобождает. LD_LIBRARY_PATH правильно установлен позволить компоновщику загружать все библиотеки. Когда я делаю:

libgidcwf    = ctypes.cdll.LoadLibrary(libidcwf_path)

Я получаю следующую ошибку:

Traceback (most recent call last):
  File "libwfm_test.py", line 12, in <module>
    libgidcwf    = ctypes.cdll.LoadLibrary(libidcwf_path)
  File "/usr/lib/python2.5/ctypes/__init__.py", line 431, in LoadLibrary
    return self._dlltype(name)
  File "/usr/lib/python2.5/ctypes/__init__.py", line 348, in __init__
    self._handle = _dlopen(self._name, mode)
OSError: path-to-my-lib/libwav.so: undefined symbol: ODBCGeneralQuery

Кажется, что LD_LIBRARY_PATH не имеет никакого эффекта здесь. Существует ли способ иметь их "загружаемая" библиотека зависимости?

Заранее спасибо за справку.

23
задан zoobert 24 February 2010 в 17:19
поделиться

1 ответ

Казалось бы, libwav.so не заявляет о своей зависимости от библиотеки, определяющей ODBCGeneralQuery. Попробуйте запустить ldd path-to-my-lib / libwav.so и посмотрите, не что-то пропало.Если вы создаете совместно используемую библиотеку, вы должны добавить -llibname к команде связывания (которая похожа на gcc -shared -o libwav.so ao bo co ) для каждой библиотеки, которую использует код библиотеки. Любые другие библиотеки, на которые ссылается исходная разделяемая библиотека таким образом, также должны быть загружены автоматически.

18
ответ дан 29 November 2019 в 02:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: