2014-10-21 2 views
3

я получаю следующий Linker Ошибку в Xcode 6.1 только Xcode 6.01 работает отлично:Mach-O компоновщик Ошибка в Xcode 6.1

Undefined symbols for architecture x86_64: 
    "__TWvdvC7Bamberg18TourViewController2mmT_", referenced from: 
     __TFC7Bamberg18TourViewControllerm2mmT_ in tours.o 
ld: symbol(s) not found for architecture x86_64 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

Теперь я знаю, о стандартных предложениях. Я попытался исчерпывающе:

  • очистки проект папка & сборки
  • удаления полученных данные органайзера & папки разработчиков
  • удалить предыдущую версию приложения от тренажера и устройства
  • сброса Simulator настройки
  • " Только построение активной архитектуры "на Да/Нет
  • , играющий с настройками компилятора и архитектуры
  • добавляя каждую основу, которая imaginably (включая добавление их все)
  • убедитесь, что все файлы реализации включены в раздел «Источники Compile»
  • Я даже воссоздали весь проект в XCode 6.1, чтобы убедиться, что его не какой-то скрытый багги полученные данные выпуск

Наконец, мне удалось указать источник проблемы с импортированной Objective класса C, который правильно мостовом - ушла ошибка, когда я не использовать этот класс :(https://github.com/mrcrow/MRoundedButton)

Если я непосредственно открываю демо-версию Из этого класса в 6.1 он работает отлично. Поэтому я считаю, что это должен быть либо конфликт этого класса с моим конкретным кодом, либо мостом, либо ошибкой моста этого класса с быстрым кодом в целом.

Любая помощь очень ценится.

+0

Какие настройки вы задали для цели >> Настройки сборки >> Архитектура? – raurora

+0

Стандартные архитектуры (armv7, arm64) – hoshy

+0

Используете ли вы два класса 'MRoundedButton.h' и' MRoundedButton.m' напрямую или Cocoa Pods? – raurora

ответ

1

У вас возникли проблемы с кодом Swift или вызвана ошибка в компиляторе Swift. Символы, на которые ссылается ваш компоновщик, - это символы Swift (обозначенные префиксом __T). При переходе к swift-demangle инструмента, символы перевести:

_TFC7Bamberg18TourViewControllerm2mmT_ ---> Bamberg.TourViewController.mm.materializeForSet :() 
_TWvdvC7Bamberg18TourViewController2mmT_ ---> direct field offset for Bamberg.TourViewController.mm :() 

Так что в вашем TourViewController вы, кажется, ссылаться на поле mm, но компоновщик не может найти его. Возможно, вы можете переписать/реорганизовать свой код, чтобы избежать/устранить эту проблему.

+0

Нечетный, потому что, если я не использую вышеупомянутый класс ObjC, Swift TourViewController отлично работает, как есть. Но я все равно попытаюсь поиграть с меняющимися вещами. Спасибо. – hoshy

+0

Ничего, ты был мертв. Я должен был объявить mm (который является словарем) внутри метода, а не глобально. Не знаю, почему, но сейчас это работает. Большое спасибо за то, что поставил меня на путь. – hoshy

Смежные вопросы