Неопределенные символы для архитектуры armv6, Обновление до iOS 4.3 - PullRequest
8 голосов
/ 23 марта 2011

Я исправляю приложение от iOS 4.2 до 4.3, используя новый xcode4. Без изменений, за исключением установки iOS на 4.3, я создал права и вперед!

Сообщение, которое я получаю:

Undefined symbols for architecture armv6:"function", referenced from:

Я пытался очистить проект, переустановив xcode. Я также удалил демо-версию xcode4. Я также пытался установить на Оптимизированный armv7.

Я был бы очень рад за помощь, я застрял. На самом деле.

Большое спасибо заранее!

Ответы [ 8 ]

12 голосов
/ 17 апреля 2012

Вот как у меня появилась эта проблема:

Я добавил .h, .m и NIB из другого проекта, перетащив их в навигатор проекта. XCode не добавил их в фазы сборки должным образом.

Мое решение этой проблемы:

enter image description here

  • Нажмите на значок проекта
  • Перейти к цели в меню навигатора
  • Нажмите на вкладку «Фазы сборки»
  • Добавьте файл .m в «Compile Sources» (либо перетащите его, либо используйте кнопку +)
  • Добавьте файл .xib или Storyboard в «Копирование ресурсов комплекта»
  • Очистить и построить
10 голосов
/ 04 мая 2011

Для этого типа ошибки, это то, что я обычно вижу:

 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"

Удалите эту строку и введите ее заново (не копируйте и не вставляйте ее - вы просто перенесете скрытый оскорбительный символ).

8 голосов
/ 15 июля 2011

Нажмите на название своего проекта в окне навигации, выберите цель, против которой вы строите, перейдите к этапам сборки, убедитесь, что тот, который Xcode сообщает вам, что отсутствует, там.

1 голос
/ 02 октября 2013

У меня была такая же проблема в Xcode5 для iOS7 с TestFlight SDK. Моя проблема заключалась в том, что для параметра «Build Active Architecture Only» было установлено только Debug.

Вы можете найти настройку в «YourProject» -> «Настройки сборки» -> «Архитектура» Установите опцию «Release» на «Yes».

Это решило мою проблему - надеюсь, это поможет и вам! :)

0 голосов
/ 31 марта 2015

В моем случае я делал это в viewcontroller.m

#import <MediaPlayer/MediaPlayer.h>

Без связывания двоичных файлов с библиотеками с MediaPlayer.framework. После добавления он отлично скомпилировал

0 голосов
/ 01 декабря 2014

У меня внезапно появилась похожая проблема - точнее, я получаю 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

0 голосов
/ 26 ноября 2013

У меня была такая же проблема в Xcode5 для iOS7 с TestFlight SDK.Моя проблема заключалась в том, что для параметра «Build Active Architecture Only» было задано только Debug.

Вы можете найти параметр в «YourProject» -> «Build Settings» -> «Architectures». Установите для параметра «Debug» значение'architecure arm7 arms7s'.

Это решило мою проблему - надеюсь, она вам тоже поможет!:)

0 голосов
/ 01 декабря 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...