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
источник
1

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

  1. Выберите файл проекта в Xcode 4
  2. Выберите цель, затем перейдите на вкладку «Настройки сборки»
  3. Убедитесь, что All выбран в панели фильтров (не Basic).
  4. Прокрутите вниз до раздела «Пути поиска», и вы найдете там пути поиска библиотек.
ответ дан Simon Whitaker 23.07.2011 в 18:25
источник