2015-06-13 2 views
51

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

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

Undefined symbols for architecture i386: "_deflate", referenced from: +[GAICompressionUtil gai_dataByCompressingBytes:length:compressionLevel:mode:] in libGoogleAnalyticsServices.a(GAICompressionUtil.o) "_deflateEnd", referenced from: +[GAICompressionUtil gai_dataByCompressingBytes:length:compressionLevel:mode:] in libGoogleAnalyticsServices.a(GAICompressionUtil.o) "deflateInit2", referenced from: +[GAICompressionUtil gai_dataByCompressingBytes:length:compressionLevel:mode:] in libGoogleAnalyticsServices.a(GAICompressionUtil.o) "_inflate", referenced from: +[GAICompressionUtil gai_dataByInflatingBytes:length:isRawData:] in libGoogleAnalyticsServices.a(GAICompressionUtil.o) "_inflateEnd", referenced from: +[GAICompressionUtil gai_dataByInflatingBytes:length:isRawData:] in libGoogleAnalyticsServices.a(GAICompressionUtil.o) "inflateInit2", referenced from: +[GAICompressionUtil gai_dataByInflatingBytes:length:isRawData:] in libGoogleAnalyticsServices.a(GAICompressionUtil.o) ld: symbol(s) not found for architecture i386 clang: error: linker command failed with exit code 1 (use -v to see invocation)

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

warning: skipping file '/Applications/Xcode-beta.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator9.0.sdk/usr/lib/libz.tbd' (unexpected file type 'text' in Frameworks & Libraries build phase)

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

+0

try Product Clear. Если это не поможет. удалить кеширование Xcode и полученные данные –

+0

Я согласен с @LeoDabus использовать «Очистить продукт». Как новый проект, добавление этого tbd (что это значит?) Будет компилироваться в порядке. – Laurent

+1

Я уже убрал и перестроил проект дыры - та же проблема! –

ответ

108

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

  1. Перейти Построить Фазы> Ссылка Двоичный с Librairies> +> Добавить другой
  2. После того как в окне выбора файла сделать "CMD" + Shift + G (Перейти в папку) и типа/USR/Библиотека/
  3. С/USR/Lib вы можете добавить: libz.dylib и многое другое ...
  4. Compile и весело
+37

Это устарело. Теперь он должен быть libz.tbd. – bkwebhero

+5

@BK Может быть, это должно, по-прежнему не работает для меня на Yosemite с Xcode 7.1.1 с .tbd - использование вышеуказанного решения работает в симуляторе и на устройстве – dogsgod

+0

Также кажется, что вам даже не нужно добавьте их в свой список ссылок Binary with Libraries - по крайней мере, в моем случае Xcode находит их автоматически. Как и в ответе AZ0 ниже. – Alex

-2

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

https://stackoverflow.com/a/30981161/627794

Edit: (содержание ссылка добавляется)

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

8

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

+0

Спасибо! Это действительно так. Проблема для меня с Xcode 7.2, что симулятор использует .tbd и iphone device/archive, использует .dylib. Поэтому он жаловался, что не может найти недостающие библиотеки. –

+0

Простое удаление библиотек было правильным ответом в моем случае. Похоже, что они должны были быть в старой версии Xcode, но в текущей версии, которую я использую (8.1), она работает без них. – Alex

1

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

78

libz.dylib теперь находится под libz.tbd quote from the Apple developer forums:

For those who are curious, the .tbd files are new "text-based stub libraries", that provide a much more compact version of the stub libraries for use in the SDK, and help to significantly reduce its download size.

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

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

Для clearify это, я приведу Guitz ответ с обновленным Материалы

  1. Go to Build Phases >Link Binary with Librairies > + > Add other
  2. Once in the file selection window do "CMD"+Shift+G (Go to folder) and type /usr/lib/
  3. From /user/lib you can add : libz.tbd and more...
  4. Compile and have fun
+3

Это должен быть первый ответ! –

+2

Безопасно ли это использовать на старых версиях iOS? по ссылке, которую вы предоставляете, они говорят: «Удалите все ссылки на .tbd», поэтому, следует ли использовать .tbd или нет? – jcesarmobile

0

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

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

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

2

У меня эта проблема в Objective-C project.ios9.1, xcode7.1

1.Go к цели> Build Phases> Ссылка Двоичные с Librairies> +

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

Он работал для меня

0

Вы также можете добавить lybz.dylib из «Другие флаги компоновщика» в Строительства Настройки путем добавления т он аргумент -lz.

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

Смежные вопросы