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

Undefined символы для архитектуры i386: "_deflate", ссылка на PlatCompress (enumCompressOperation, CompressCookie *, void *, long) в libMo.a

Я использую приложение для iOS с использованием SUP. В соответствии с документацией; Я включил библиотеку и задал путь ссылки в Xcode. При создании следующей ошибки:

Undefined symbols for architecture i386:
  "_deflate", referenced from:
      PlatCompress(enumCompressOperation, CompressCookie*, void*, long) in         libMo.a(tlplatcompress.o)
  "_deflateEnd", referenced from:
      PlatCompress(enumCompressOperation, CompressCookie*, void*, long) in libMo.a(tlplatcompress.o)
  "_deflateInit_", referenced from:
      StartCompression(enumCompressOperation, unsigned char, long (*)(void*, void*, long), void*, void**) in libMo.a(tlplatcompress.o)
  "_deflateParams", referenced from:
      StartCompression(enumCompressOperation, unsigned char, long (*)(void*, void*, long), void*, void**) in libMo.a(tlplatcompress.o)
  "_inflate", referenced from:
      PlatCompress(enumCompressOperation, CompressCookie*, void*, long) in libMo.a(tlplatcompress.o)
  "_inflateEnd", referenced from:
      PlatCompress(enumCompressOperation, CompressCookie*, void*, long) in libMo.a(tlplatcompress.o)
  "_inflateInit_", referenced from:
      StartCompression(enumCompressOperation, unsigned char, long (*)(void*, void*,  long), void*, void**) in libMo.a(tlplatcompress.o)
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Пожалуйста, помогите мне, как решить эту ошибку. Я новичок в разработке родных iOS, используя SUP.

Спасибо.

4b9b3361

Ответ 1

У меня также была ошибка.

Добавить "libz.dylib" в рамку с целевой страницы → вкладка "Фазы построения" → "Связывание двоичных файлов с библиотеками",

надеюсь, что это сработает для вас.

Ответ 2

Начиная с Xcode 7, вместо добавления libz.dylib, вы должны сделать это:

  • Перейдите на вкладку Build Settings проекта
  • Искать Other Linker Flags
  • Добавить -lz в качестве флага компоновщика (см. снимок экрана)
  • В Product выберите Clean перед тем, как снова создать

lz link option

Ответ 3

Undefined символы для архитектуры i386:

  "_deflate", referenced from:
      PlatCompress(enumCompressOperation, CompressCookie*, void*, long) in         libMo.a(tlplatcompress.o)
  "_deflateEnd", referenced from:
      PlatCompress(enumCompressOperation, CompressCookie*, void*, long) in libMo.a(tlplatcompress.o)
  "_deflateInit_", referenced from:
      StartCompression(enumCompressOperation, unsigned char, long (*)(void*, void*, long), void*, void**) in libMo.a(tlplatcompress.o)
  "_deflateParams", referenced from:
      StartCompression(enumCompressOperation, unsigned char, long (*)(void*, void*, long), void*, void**) in libMo.a(tlplatcompress.o)
  "_inflate", referenced from:
      PlatCompress(enumCompressOperation, CompressCookie*, void*, long) in libMo.a(tlplatcompress.o)
  "_inflateEnd", referenced from:
      PlatCompress(enumCompressOperation, CompressCookie*, void*, long) in libMo.a(tlplatcompress.o)
  "_inflateInit_", referenced from:
      StartCompression(enumCompressOperation, unsigned char, long (*)(void*, void*,  long), void*, void**) in libMo.a(tlplatcompress.o)
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)

У меня также была та же проблема, я думаю, вы не включили библиотеку libz.dylib.

Для этого:

  • перейти в целевой раздел
  • Сборка фаз
  • Связывание двоичных файлов с библиотеками
  • нажмите на кнопку +.
  • поиск libz.dylib
  • Кнопка clcik on add.

Ответ 4

1.go в целевой раздел

вкладка 2.Build Phases

3.Link Binaries с библиотеками

4. кликнуть на + кнопку

5.search libz.tbd(или libz.dylib)

6. Нажмите кнопку добавления.