Подтвердить что ты не робот

XCode 4 добавляет dylib

Я пытаюсь создать, а затем добавить 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

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

4b9b3361

Ответ 1

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

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

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

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

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

Ответ 2

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

  • Выберите файл проекта в Xcode 4
  • Выберите цель, затем перейдите на вкладку "Настройки сборки"
  • Убедитесь, что All выбран в панели фильтров (не Basic).
  • Прокрутите вниз до раздела "Пути поиска", и вы найдете там пути поиска библиотек.