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

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

17 голосов
/ 23 июля 2011

Я пытаюсь создать и добавить dylib в проект.Я создал его, используя шаблон «Какао-библиотека» и установив тип «Динамический» (не уверен, должен ли он быть динамическим или статическим ...).Затем я создал простой класс 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

. Я также создал фазу копирования файла и установил место назначения" Frameworks ". Я все еще получаю ту же ошибку. Что яне так? Спасибо.

Ответы [ 2 ]

37 голосов
/ 23 июля 2011

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

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

Создание фазы копирования файлов и копирование dylib в подкаталог Frameworks пакета приложения - правильная вещьdo do.

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

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

2 голосов
/ 23 июля 2011

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

  1. Выберите файл проекта в Xcode 4
  2. Выберите цель, а затем перейдите на вкладку Параметры сборки
  3. Убедитесь, что на панели фильтра выбрано Все (не Базовое)
  4. Прокрутите вниз до раздела Пути поиска, и там вы найдете Пути поиска библиотеки
...