DLOPEN не удается с файлом, не найденным, когда файл находится в правильном пути
Вопрос
У меня есть библиотека, созданная с помощью libtool, которая устанавливается в каталог библиотеки пакета, /usr/local/lib/myprog/libmylib.so
. Отказ Я динамически загружаю библиотеку в моем коде с libltdl. Когда я пытаюсь загрузить эту библиотеку на одном компьютере, она работает просто хорошо. На другой, с той же сборкой и библиотекой, установленной в том же месте, я получаю ошибку «файл не найден».
Если я позвоню lt_dlforeachfile
непосредственно раньше lt_dlopenext
(который я использую для загрузки библиотеки), то я могу видеть, распечатывая имена файлов, которые нужна библиотека, была найдена в пути поиска. Но затем сразу после последующей загрузки его не удается с ошибкой «Файл не найден». Какие-либо предложения?
ОБНОВИТЬ
Я пытался перейти на использование dlopen
и явно указав абсолютный путь к библиотеке. Это все еще работает на некоторых системах, а не с другой.
Решение
Оказалось, что libltdl скрывала реальную ошибку. «Файл не найден», был из другой библиотеки, на которой в библиотеке, которую я загружал. Я обнаружил это при использовании dlerror()
Чтобы распечатать сообщения об ошибках. После установки пропавшей библиотеки все хорошо!