dlopen () изображение ошибки не найдено - PullRequest
6 голосов
/ 15 июля 2011

У меня есть программное обеспечение, которое сначала загружает .dylib, позволяет вызвать libFirst.dylib с помощью следующей команды:

void* handle = dlopen(path.c_str(), RTLD_LAZY | RTLD_GLOBAL);

Позже внутри функции из загруженного libFirst.dylib я пытаюсь загрузить другой .dylib, используята же команда, но для libSecond.dylib, загрузка этой общей библиотеки дает мне следующие предупреждения в моей консоли XCode:

error warning: Ignored unknown object module at 0x129310 with type 0x8a8399

dlerror: dlopen(/path/libSecond.dylib, 9): Library not loaded: libFirst.dylib
  Referenced from: /path/libSecond.dylib
  Reason: image not found

То, что я не получаю, это то, что она говорит, что libFirst.dylib не загруженно я в настоящее время нахожусь внутри функции из libFirst.dylib, так как это может быть?

Все мои пути в DYLD_LIBRARY_PATH тоже кажутся правильными.

Заранее спасибо, я застрял на этом длядней.

Ответы [ 2 ]

3 голосов
/ 22 июля 2011

В итоге я использовал -install_name для изменения имени установки всех моих библиотек на @ rpath / dylibName.dylib, а затем в Xcode я установил пути поиска Runpath с помощью @loader_path, чтобы найти все мои .dylibs, которые я использовал.

0 голосов
/ 21 мая 2018

используйте:

install_name_tool -id @executable_path/../Frameworks/mylib.dylib mylib.dylib

, затем проверьте его с помощью:

otool -D mylib.dylib
...