Подтвердить что ты не робот

Undefined символы для архитектуры x86_64 на Xcode 6.1

Внезапно Xcode бросил мне эту ошибку во время компиляции:

Undefined symbols for architecture x86_64:
"_OBJC_CLASS_$_Format", referenced from:
 objc-class-ref in WOExerciseListViewController.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

После некоторых исследований я могу понять, что библиотека, которую я использую, несовместима с 64-разрядной версией. Но это очень странно, так как я работаю с теми же библиотеками, по крайней мере, неделю, не имея одной проблемы компиляции за это время. Эти две библиотеки состоят всего из нескольких классов, и когда я удалил их из своего проекта, я получил ту же проблему. Поскольку я никогда не создавал библиотеки самостоятельно, я понятия не имею, как я могу найти, что те, которые я использую, совместимы с 64-битными (?) Я также попробовал следующие изменения для архитектур под целевой панелью:

  • добавлено $(ARCHS_STANDARD_INCLUDING_64_BIT) в Архитектуры.
  • создать только активную архитектуру → установить в "НЕТ"
  • для "допустимых архитектур" → установите в arm64, armv7 и armv7s
  • удалил папку DerivedData и ее содержимое, очистил и снова построил.

Но ни одно из этих изменений не работает. Пожалуйста, кто-то знает об этом? Спасибо

4b9b3361

Ответ 1

Судя по всему, ваш класс "Формат" вовлечен в проблему. Проверьте объявление этого класса, особенно если вы делали это внутри другого класса, вы, вероятно, забыли @implementation или что-то подобное.

Ответ 2

Проверьте, включен ли этот файл в сборку фаз → Скомпилированные источники

Ответ 3

Убедитесь, что WSExerciseListViewController является целевым членом; это сработало для меня!

enter image description here

Ответ 4

Да, я думаю, что библиотека, которую вы используете, несовместима с 64-битной версией, но вы можете решить проблему -

Просто перейдите в "Настройки сборки" > "Архитектуры" и замените $(ARCHS_STANDARD) на $(ARCHS_STANDARD_32_BIT)

Итак, ваш xcode создаст ваш проект с 32-разрядной поддерживаемой версией.

Ответ 5

Я только что получил эту ошибку, когда я открыл (довольно) старый проект, созданный в Xcode 4 ~ ish, в Xcode 6.4. Хотя связанные рамки были видны на боковой панели проекта, я упустил из виду, что на вкладке Фазы сборки цели не было связанных библиотек. Как только я исправил это, он скомпилировался нормально.

Ответ 6

Оказалось, что я забыл написать свою часть @implementation.

Ответ 7

Я просто не связывал библиотеки в разделе "Связывание двоичных файлов с библиотеками".

Ответ 8

Я решил ту же проблему, перейдя на Xcode Build Settings и в Architectures, я изменил стандартную архитектуру Xcode 6.1.1 для: -

$(ARCHS_STANDARD_32_BIT)

Ответ 9

Такая же ошибка, когда я копировал/вставлял класс и забыл переименовать его в файл .m.

Ответ 10

Я решил проблему, удалив ссылку на файл и добавив ее снова в проект. В моем случае это работает.

Ответ 11

У меня была точно такая же ошибка, и я решил ее, перезапустив xcode.

Для меня проблема возникла после обновления svn, рассматриваемый файл был добавлен в папку проектов, но он никогда не появлялся в xcode (9.3.1) - пока я не перезапустил его.

Ответ 12

этот параметр работал у меня:

  • Архитектуры = $(ARCHS_STANDARD_32_BIT)
  • Только встроенная активная архитектура: YES
  • Действительные архитектуры armv6 armv7 armv7s arm64

Ответ 13

Удалите $(ARCHS_STANDARD) и добавьте $(ARCHS_STANDARD_32_BIT).

enter image description here