ошибка при импорте zlib в iOS: символы не найдены collect2: ld - PullRequest
28 голосов
/ 14 ноября 2008

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

"_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

Ответы [ 2 ]

82 голосов
/ 14 ноября 2008

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

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

lz screenshot

47 голосов
/ 14 ноября 2008

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

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

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

...