XCode 4 добавление dylib

17

Я пытаюсь создать, а затем добавить dylib в проект. Я создал его с помощью шаблона «Cocoa-Library» и установил тип «Динамический» (не уверен, что он должен быть динамическим или статическим ...). Затем я создал простой класс obj-c, называемый Test, и написал в нем метод, который выводит что-то на консоль.

Я скомпилировал и использовал сгенерированный файл .dylib и поместил его в другой проект. Теперь, когда я пытаюсь его использовать, я получаю это сообщение во время выполнения "

dyld: Library not loaded: /usr/local/lib/TESTLib.dylib
  Referenced from: /Users/***/Library/Developer/Xcode/DerivedData/TestingDYLIB-axmoocnxbwznoyerfogosumqufxc/Build/Products/Debug/TestingDYLIB.app/Contents/MacOS/TestingDYLIB
  Reason: image not found

Я также создал фазу «Копировать файл» и назначил пункт назначения «Рамки». Я все равно получаю ту же ошибку. Что я делаю не так? Спасибо.

    
задан user635064 23.07.2011 в 18:20
источник

2 ответа

37

Проблема не в том, где Xcode ищет библиотеку во время компиляции, и это то, на что отвечает ответ Саймона Уайкера.

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

Создание фаз копируемых файлов и копирование dylib в подкаталог Frameworks пакета приложений - это правильно.

Однако вам нужно сделать дополнительный шаг. Вам нужно скомпилировать динамическую библиотеку с именем install_name, подходящим для приложения пакета. По умолчанию динамическая библиотека создается с именем install / usr / local / lib. Приложение не может найти вашу библиотеку, потому что ее не существует. Даже если вы разместите библиотеку там, ваши пользователи, конечно, не будут иметь ее, поэтому это будет неправильное решение.

Правильное решение связывает библиотеку с приложением. Чтобы установить имя для установки для динамической библиотеки, перейдите в проект динамической библиотеки и установите опцию «Имена динамической библиотеки»: @executable_path /../ Frameworks / libmydynamiclibrary.dylib

    
ответ дан wadesworld 23.07.2011 в 21:33
источник
  • Чувак ... все равно. –  user635064 23.07.2011 в 21:57
  • У меня такая же проблема. Я не могу сделать последний шаг решения. Где этот параметр для настройки имени для некоторого пути framework. –  JiteshW 08.11.2011 в 06:08
  • Не понимаю вашу проблему. Вы можете указать «Имя установки динамической библиотеки», –  wadesworld 09.11.2011 в 23:42
  • как мне «зайти в проект динамической библиотеки» ?, потому что я загрузил .dylib, и я не понимаю, как связать его с проектом, который будет переноситься –  Fady Kamal 21.12.2012 в 21:18
  • Если у меня есть библиотека и другая библиотека, у которой есть зависимость от первой библиотеки, можно ли создать для каждой из них .framework с заголовками и dylib с исправленными именами установки? Для двух библиотек это будет только dylib, а не исходный код. –  farski 17.04.2014 в 00:03
Показать остальные комментарии
1

Xcode просматривает /usr/local/lib/ для библиотеки. Если библиотека находится в другом месте, добавьте это местоположение в пути поиска библиотеки:

  1. Выберите файл проекта в Xcode 4
  2. Выберите цель, затем перейдите на вкладку «Настройки сборки»
  3. Убедитесь, что All выбран в панели фильтров (не Basic).
  4. Прокрутите вниз до раздела «Пути поиска», и вы найдете там пути поиска библиотек.
ответ дан Simon Whitaker 23.07.2011 в 18:25
источник
  • Я перетащил .dylib в папку фреймворков в xcode. Библиотека находится в: / Users / ***** / Desktop / TestingDYLIB, которая уже существует в пути поиска библиотеки –  user635064 23.07.2011 в 18:34
  • Я сделал это и установил местоположение в мое местоположение, которое содержит .dylib и все еще не может его найти –  Fady Kamal 21.12.2012 в 21:20