1 дублирующий символ для архитектуры i386
Мне грозит критическая проблема, Xcode вызывает странное исключение при его создании
"
дублирующий символ _избирается в: /Users/mhgaber/Library/Developer/Xcode/DerivedData/ ا Проект-Имя-aopcbghvorqhdwbyudzqsyhtekcu/Build/полупродукты/Project-Name.build/Debug-iphonesimulator/Project-Name.build/Объекты-нормальный/i386/ClassX.o /Users/mhgaber/Library/Developer/Xcode/DerivedData/Project -Name-aopcbghvorqhdwbyudzqsyhtekcu/Build/Intermediates/Project-Name.build/Debug-iphonesimulator/Project-Name.build/Objects-normal/i386/ClassY.o ld: 1 дублирующий символ для архитектуры i386 clang: ошибка: команда компоновщика не сработала с кодом выхода 1 (используйте -v для вызова вызова)
Я много искал, но я ничего не нашел, чтобы помочь мне.
Ответы
Ответ 1
Посмотрите как на файлы ClassX
, так и на ClassY
- Какие цели они включены? В принципе метод _selected
дублируется в обоих из них. Я собираюсь угадать, что это простой метод С, который в обоих файлах называется одинаковым. Попробуйте переименовать _selected
в один из файлов.
Ответ 2
В моем случае я объявлял const
в заголовочном файле, который отлично работал при создании и запуске на устройстве (iPhone 5), однако при попытке имитировать 4S я вдруг получил около 300 "повторяющиеся символы".
Оказывается, мне нужно также отметить const
как static
, и проблема исчезла. Предположительно, он пытался переопределить константу при каждом обращении к заголовку. Компилятор недостаточно умен, чтобы сделать константы статическими? Не думал, что это будет необходимо, но я думаю, что это так.
const CGFloat kTitleAnimateDistance = 50.f;
Нужно быть:
const static CGFloat kTitleAnimateDistance = 50.f;
Ответ 3
Некоторое время вы случайно импортируете .m файл вместо .h, из-за которого возникает эта ошибка. Проверьте, и если это не причина, выполните следующие шаги.
1- Проверить фазы сборки в настройках цели.
2- Перейдите в раздел источника компиляции.
3- Проверьте, существует ли файл дважды или один раз.
4- Если файл существует, дважды удалите его.
5- Постройте снова.
Ответ 4
У меня была такая же проблема, и ответ @dtrotzjr дал мне подсказку о том, что может вызвать ее.
В моем случае у меня была простая функция C void
в моей структуре (которую xcode жаловался как дублирующий символ), и мне нужно было объявить ее как static void