изображение ошибки dlopen() не найдено


У меня есть программное обеспечение, которое сначала загружает a .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

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

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

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

2 6

2 ответа:

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

Использование:

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

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

otool -D mylib.dylib