Dyld: библиотека не загружена - PullRequest
3 голосов
/ 25 сентября 2010

Я пытаюсь связать библиотеку libssh2.1.dylib с моим проектом iPhone Xcode, но я получаю эту ошибку, когда пытаюсь связать ее. Если я не добавлю это в качестве основы, я получу ошибку Символы не найдены. Теперь /Users/Matt/Documents/Development/iPhoneApps/Portscanner/lib/libssh2.1.dylib не является правильным путем к этому файлу. Я скачал библиотеку из интернета, и это путь к компьютеру автора. У меня есть файл, расположенный в совершенно другом месте. Как изменить ссылку пути? Вот ошибка, которую я получаю:

dyld: Library not loaded:   /Users/Matt/Documents/Development/iPhoneApps/PortScanner/lib/libssh2.1.dylib
Referenced from: /var/mobile/Applications/5353E047-05FE-42E4-8F32-617E8D02A11D/Port     Scanner.app/Port Scanner
Reason: image not found

1 Ответ

1 голос
/ 31 декабря 2011

Вы можете использовать install_name_tool, чтобы изменить имя установленного пути в файле .dylib:

http://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man1/install_name_tool.1.html

Пример изменения имени установки:

install_name_tool -id <yourpath>/libssh2.1.dylib /Users/Matt/Documents/Development/iPhoneApps/Portscanner/lib/libssh2.1.dylib
  • первый параметр - это требуемый путь
  • второй параметр - реальный путь к файлу, поэтому перетащите файл из Finder

Также вам может потребоваться изменитьИмена зависимостей тоже, и вы можете использовать тот же инструмент для этого:

install_name_tool -change <old path> <new path> <library name>

Вы можете проверить, какие текущие имена используют otool.Таким образом, вы можете проверить изменение с помощью otool следующим образом: otool -D libssh2.1.dylib и зависимости с помощью otool -L libssh2.1.dylib

Или вы можете получить исходный код и пересобрать его самостоятельно, используя текущий путь в нем.

Если вам нужен относительный путь, вам нужно изменить имя вашей установки на @ rpath / libssh2.1.dylib и добавить путь к настройкам вашего проекта.

...