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