Неопределенные символы для архитектуры armv6, Обновление до iOS 4.3
Я исправляю приложение от iOS 4.2 до 4.3, используя новый xcode4. Без изменений, за исключением установки iOS на 4.3, я создал права и вперед!
Я получаю сообщение:
Undefined symbols for architecture armv6:"function", referenced from:
Я пытался очистить проект, переустановив xcode. Я также удалил демо-версию xcode4. Я также попытался установить на Оптимизированный armv7.
Я был бы очень рад за некоторую помощь, я застрял. В самом деле.
Большое спасибо заранее!
8 ответов
Для этого типа ошибки, это то, что я обычно вижу:
Undefined symbols for architecture armv6:
"_OBJC_CLASS_$_MyCustomController", referenced from:
objc-class-ref in SomeOtherController.o
ld: symbol(s) not found for architecture armv6
Почти каждый раз, когда я вижу эту ошибку, она вызвана скрытыми / невидимыми символами в операторе импорта в SomeOtherController.h
или же SomeOtherController.m
, Итак, посмотрите на ваш файл.h и.m, найдите строку, которая выглядит следующим образом:
#import "MyCustomController.h"
Удалите эту строку и введите ее заново (не копируйте / вставляйте ее - вы просто перенесете скрытый оскорбительный символ).
Вот как я получил эту проблему:
Я добавил .h
, .m
и NIB из другого проекта, перетащив их в навигатор моего проекта. XCode не добавил их в фазы сборки должным образом.
Мое решение этой проблемы:
- Нажмите на значок проекта
- Перейти к цели в меню навигатора
- Нажмите на вкладку "Фазы сборки"
- Добавить
.m
файл в "Компиляция источников" (либо перетащите его, либо используйте кнопку +) - Добавить
.xib
или файл раскадровки в "Копирование ресурсов пакета" - Очистить и построить
Нажмите на название вашего проекта в окне навигации, выберите цель, против которой вы строите, перейдите к этапам сборки, убедитесь, что тот Xcode сообщает вам, что отсутствует, там.
У меня была такая же проблема в Xcode5 для iOS7 с TestFlight SDK. Моя проблема заключалась в том, что "Build Active Architecture Only" был установлен только на "Debug".
Вы можете найти настройки в "YourProject" -> "Build Settings" -> "Architectures". Установите для параметра "Release" значение "Yes".
Это решило мою проблему - надеюсь, вам это тоже поможет!:)
В моем случае я делал это в viewcontroller.m
#import <MediaPlayer/MediaPlayer.h>
Без связывания двоичных файлов с библиотеками с MediaPlayer.framework. После добавления он скомпилирован нормально
У меня была такая же проблема в Xcode5 для iOS7 с TestFlight SDK. Моя проблема заключалась в том, что "Build Active Architecture Only" был установлен только на "Debug".
Вы можете найти настройки в "YourProject" -> "Build Settings" -> "Architectures". Установите для параметра "Debug" значение "architecure arm7 arms7s".
Это решило мою проблему - надеюсь, вам это тоже поможет!:)
У меня внезапно появилась похожая проблема - точнее, я получал Undefined symbols for architecture armv6: "_OBJC_CLASS_$_CLLocationManager", referenced from: objc-class-ref in MyCLController.o
Обратите внимание, что у меня CoreLocation.framework указан в моих фреймворках (в xcode' Project left nav, в папке Frameworks); и раньше геолокация работала просто отлично.
Я избавился от этой проблемы, переустановив CoreLocation.framework.
Если вы не уверены, как это сделать в xcode:
* нажмите на свой проект в левой панели навигации xcode
* Зайдите на вкладку Общие настроек вашего проекта
* Перейдите вниз - вы увидите список фреймворков, установленных под Linked Frameworks and Libraries
* Нажми на +
значок, чтобы добавить CoreLocation.framework
У меня была эта проблема, и я только что решил ее. Это была простая опечатка в имени функции (забыла одну букву), которая вызвала проблему в моем случае.