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
из пути поиска библиотеки в настройках сборки.