Ошибка с iOS 5.1, когда я использую ASIHTTPRequest и SBJSON
Я получаю эту ошибку:
Undefined symbols for architecture i386:
"_OBJC_CLASS_$_ASIHTTPRequest", referenced from:
objc-class-ref in FirstViewController.o
"_OBJC_CLASS_$_SBJsonParser", referenced from:
objc-class-ref in FirstViewController.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.1.2.5.dylib,CF Network,UI Kit и Foundation. Я обыскал все форумы и провел почти 4 дня, но просто не нашел причину.
Когда я комментирую мои строки кода ASIHTTPRequest и SBJSON, он работает нормально. Я добавил все классы для ASIHTTPRequest и SBJSON и проверил трижды. Кто-нибудь может подсказать, что я делаю не так?
4 ответа
Я хотел бы взглянуть на раздел фаз сборки в вашей цели. В разделе "Исходники компиляции" убедитесь, что вы видите файлы.m для ASIHTTPRequest и для SBJson. Иногда, когда вы перетаскиваете внешние классы в проект, даже если вы установите флажок для копирования файлов в ваш проект, они не попадают в эти исходные коды компиляции. Когда вы перетаскиваете файл в Xcode, появляется флажок, чтобы добавить файл к цели. Если этот флажок не установлен, файл не попадет в источники компиляции. Удалите файлы и повторно добавьте их, убедившись, что этот файл отмечен (или вы можете добавить файлы.m вручную, если хотите).
Для запроса ASIHTTP добавьте следующие рамки:
- libz.1.2.5.dylib
- Конфигурация системы
- UIKit
- Фонд
- CoreGraphics
- MobileCoreServices
- CFNetworks
Если вы используете классы ASIHttp в iOS 5 или новее, вам нужно отключить ARC для ASIHttpRequest
классы в Project-> Build Phases -> Compile Sources с помощью -fno-objc-arc
для классов API ASI.
Надеюсь, это решит проблему.
У меня была такая же проблема, но когда я включил следующую структуру
теперь он работает нормально. Не забудьте включить -fno-objc-arc в исходный код компиляции
С наилучшими пожеланиями.......
В случае ошибки ASIHTTPRequest, похоже, вы не добавили ASIHTTPRequest.m в свой проект.
(Или вы добавили ASIHTTPRequest.m, но забыли упомянуть 4 миллиарда ошибок, которые xcode генерирует в отношении ARC - см. Почему в моих файлах ASIHTTPRequest отображаются ошибки ARC?)