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

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

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

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

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

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

Любая идея, что делать?

Ответ 1

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

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

Ответ 2

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

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

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

изменить

Чтобы очистить его, я приведу ответ Guitz с обновленным контентом

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

Ответ 3

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

Ответ 4

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

1.Go to Target > Сформировать фазы > Ссылка на двоичные файлы с Librairies > +

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

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

Ответ 5

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

Ответ 6

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

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

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

Ответ 7

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

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

Ответ 8

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

fooobar.com/info/52561/...

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

Откройте терминал, введите (измените нужную библиотеку, например 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

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

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