Swift 2 / iOS 9 - libz.dylib не найден

Я использую некоторые внешние коды от Google в моем новом проекте Swift 2.0, который требовал "libz.dylib" в более ранних версиях. После обновления до нового XCode / нового SDK.

XCode теперь не может импортировать libz.dylib и выдает некоторые ошибки

Неопределенные символы для архитектуры i386: "_deflate", на который ссылаются из: +[GAICompressionUtil gai_dataByCompressingBytes:length:ressionLevel:mode:] в libGoogleAnalyticsServices.a(GAICompressionUtil.o) "_deflateEnd", ссылка на сжатие: mode:] в libGoogleAnalyticsServices.a (GAICompressionUtil.o) " deflateInit2 ", на который ссылается: gai_dataByInflatingBytes:length:isRawData:] в libGoogleAnalyticsServices.a(GAICompressionUtil.o) "_inflateEnd", на который ссылается: [GAICompressionUtil gai_dataByInflatingBytes:length:isRawData:] в libGoogleAnalyticsServices.a (GAICompressionUtil.o) ld: symbol (s) не найден для архитектуры i386 clang: error: сбой команды компоновщика с кодом выхода 1 (используйте -v для просмотра вызова)

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

предупреждение: пропуская файл '/Applications/Xcode-beta.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator9.0.sdk/usr/lib/libz.tbd' (неожиданный тип файла 'text' в Этап сборки фреймворков и библиотек)

Есть идеи, что делать?

8 ответов

Решение

У меня такая же проблема. Я нашел какой-то путь вокруг.

  1. Перейти к этапам сборки> Связать двоичные файлы с библиотеками> + > Добавить другое
  2. В окне выбора файла выполните "CMD"+Shift+G (Перейти в папку) и введите / usr / lib /
  3. Из / usr / lib вы можете добавить: libz.dylib и другие...
  4. Компилируй и веселись

libz.dylib теперь можно найти в цитате libz.tbd на форумах разработчиков Apple:

Для тех, кому интересно, файлы.tbd - это новые "текстовые библиотеки-заглушки", которые предоставляют гораздо более компактную версию библиотек-заглушек для использования в SDK и помогают значительно уменьшить размер загружаемого файла.

Надеюсь, скоро появится больше документации.

редактировать

Чтобы прояснить это, я приведу ответ Гитца с обновленным содержанием.

  1. Перейти к этапам сборки> Связать двоичные файлы с библиотеками> + > Добавить другое
  2. В окне выбора файла выполните "CMD"+Shift+G (Перейти в папку) и введите /usr/lib/
  3. Из /user/lib вы можете добавить: libz.tbd и другие...
  4. Компилируй и веселись

Удалите все динамические библиотеки (dylib) из фазы связывания с бинарными файлами. Он найдет эти библиотеки самостоятельно.

Вы также можете добавить lybz.dylib из "Другие флаги компоновщика" в настройках сборки, добавив аргумент -lz,

Я должен был сделать это, потому что, используя метод, где вы ссылаетесь на библиотеку из / usr / lib, когда я развертывал свое приложение для наших тестировщиков, библиотека.dylib не могла разрешиться и вызвала сбой приложения при запуске.

У меня есть эта проблема в targe t-c project.ios9.1, xcode7.1

1. Перейти к цели> Фазы сборки> Связать двоичные файлы с библиотеками> +

2. выберите libz.tbd и добавьте его

У меня сработало

libz.dylib - это динамическая библиотека для Zlib. Вы можете установить Zlib отсюда http://zlib.net/

Вы можете добавить libz.1.dylib из папки:/usr/lib/

  1. Перейти к этапам сборки> Связать двоичные файлы с библиотеками> + > Добавить другое
  2. В окне выбора файла выполните CMD+Shift+G (Перейти в папку) и введите / usr / lib /
  3. Из / user / lib вы можете добавить: libz.1.dylib

Это сработало для меня.

Тем временем вы можете использовать предыдущий SDK. Это мой ответ для libsqlite3:

/questions/21087795/import-i-kompilyatsiya-swift-20-s-bibliotekoj-sqlite3/21087807#21087807

Изменить: (добавлено содержание ссылки)

Откройте терминал, введите (перейдите в нужную вам библиотеку, например, libz)

locate libsqlite3.dylib

Вы найдете несколько таких файлов:

/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/lib/libsqlite3.dylib
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib/libsqlite3.dylib

Перейдите в настройки вашего проекта -> Фазы сборки -> Связь с бинарными файлами. Добавьте ОБА файлы, нажав +, затем Add Other, Удар Cmd-Shift-Gи скопируйте и вставьте путь к файлу. Нажмите Open,

Если вы устанавливаете sqlite3 с помощью macports, удалите /opt/local/lib из пути поиска библиотеки в настройках сборки.

Другие вопросы по тегам