Неопределенные символы для архитектуры 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

У меня была эта проблема, и я только что решил ее. Это была простая опечатка в имени функции (забыла одну букву), которая вызвала проблему в моем случае.

Другие вопросы по тегам