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

ошибка при импорте zlib в iOS: символы не найдены collect2: ld

Я включил <zlib.h> в свое приложение для iphone и исходный код. Я <zlib.h> образец кода Molecules, предоставленный Брэдом Ларсоном, однако, когда я собираю проект, он возвращает ошибку, как показано ниже. Может ли кто-нибудь указать мне, является ли это проблемой связывания библиотеки или я что-то упускаю?

"_deflate", referenced from: -[NSData(Gzip) gzipDeflate] in NSData+Gzip.o "_inflateEnd", 
referenced from: -[NSData(Gzip) initWithGzippedData:] in NSData+Gzip.o "inflateInit2", 
referenced from: -[NSData(Gzip) initWithGzippedData:] in NSData+Gzip.o "_inflate", 
referenced from: -[NSData(Gzip) initWithGzippedData:] in NSData+Gzip.o "_deflateEnd", 
referenced from: -[NSData(Gzip) gzipDeflate] in NSData+Gzip.o "deflateInit2", referenced 
from: -[NSData(Gzip) gzipDeflate] in NSData+Gzip.o ld: symbol(s) not found collect2: ld 
returned 1 exit status
4b9b3361

Ответ 1

На вкладке Target Build Settings прокрутите вниз до раздела Other Linker Flags и убедитесь, что -lz находится в этом поле. Это будет связано с встроенным zlib, и ваша ошибка должна исчезнуть.

После изменения флагов компоновщика вы должны выбрать Clean из меню Product, прежде чем снова создать.

lz screenshot

Ответ 2

Добавьте libz в свой проект. Чтобы сделать это, выполните следующие действия в Xcode:

  • Откройте проект, выберите цель проекта, а затем нажмите значок с информацией о синем проекте на панели инструментов (или нажмите ⌘I)
    Example 1
  • Нажмите кнопку + в нижнем левом углу экрана, чтобы добавить библиотеку, прокрутите вниз до нижней части списка библиотек и выберите libz.dylib; нажмите кнопку "Добавить".
    Example 2
  • После нажатия кнопки add вы увидите, что имя библиотеки отображается в списке связанных библиотек. Теперь вы сможете создавать свой проект без связывания ошибок.
    Example 3

Этот метод можно использовать для добавления любой библиотеки из списка. Если библиотека не отображается в списке, то вы знаете, что она не является частью стандартного iPhone SDK, и вам может потребоваться переосмыслить ваше решение или статически ставить библиотеку самостоятельно и связать свою цель с ней (если возможно).