DLOPEN не удается с файлом, не найденным, когда файл находится в правильном пути

StackOverflow https://stackoverflow.com/questions/3937369

  •  30-09-2019
  •  | 
  •  

Вопрос

У меня есть библиотека, созданная с помощью libtool, которая устанавливается в каталог библиотеки пакета, /usr/local/lib/myprog/libmylib.so. Отказ Я динамически загружаю библиотеку в моем коде с libltdl. Когда я пытаюсь загрузить эту библиотеку на одном компьютере, она работает просто хорошо. На другой, с той же сборкой и библиотекой, установленной в том же месте, я получаю ошибку «файл не найден».

Если я позвоню lt_dlforeachfile непосредственно раньше lt_dlopenext (который я использую для загрузки библиотеки), то я могу видеть, распечатывая имена файлов, которые нужна библиотека, была найдена в пути поиска. Но затем сразу после последующей загрузки его не удается с ошибкой «Файл не найден». Какие-либо предложения?

ОБНОВИТЬ

Я пытался перейти на использование dlopen и явно указав абсолютный путь к библиотеке. Это все еще работает на некоторых системах, а не с другой.

Это было полезно?

Решение

Оказалось, что libltdl скрывала реальную ошибку. «Файл не найден», был из другой библиотеки, на которой в библиотеке, которую я загружал. Я обнаружил это при использовании dlerror() Чтобы распечатать сообщения об ошибках. После установки пропавшей библиотеки все хорошо!

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top