Ошибка Xcode "Duplicate Symbol", вызывающая ошибку Apple Mach-O Linker
duplicate symbol _leagueTableLoaded in:
/Users/Brendan/Library/Developer/Xcode/DerivedData/2013-dbhrwzgxgwhfbqatgqpfrmqyucyu/Build/Intermediates/2013.build/Debug-iphonesimulator/2013.build/Objects-normal/i386/LTGlobalResultsViewController.o
/Users/Brendan/Library/Developer/Xcode/DerivedData/2013-dbhrwzgxgwhfbqatgqpfrmqyucyu/Build/Intermediates/2013.build/Debug-iphonesimulator/2013.build/Objects-normal/i386/LTJumpToMeViewController.o
duplicate symbol _showGLobalCompany in:
/Users/Brendan/Library/Developer/Xcode/DerivedData/2013-dbhrwzgxgwhfbqatgqpfrmqyucyu/Build/Intermediates/2013.build/Debug-iphonesimulator/2013.build/Objects-normal/i386/LTGlobalResultsViewController.o
/Users/Brendan/Library/Developer/Xcode/DerivedData/2013-dbhrwzgxgwhfbqatgqpfrmqyucyu/Build/Intermediates/2013.build/Debug-iphonesimulator/2013.build/Objects-normal/i386/LTJumpToPositionViewController.o
duplicate symbol _leagueTableLoaded in:
/Users/Brendan/Library/Developer/Xcode/DerivedData/2013-dbhrwzgxgwhfbqatgqpfrmqyucyu/Build/Intermediates/2013.build/Debug-iphonesimulator/2013.build/Objects-normal/i386/LTGlobalResultsViewController.o
/Users/Brendan/Library/Developer/Xcode/DerivedData/2013-dbhrwzgxgwhfbqatgqpfrmqyucyu/Build/Intermediates/2013.build/Debug-iphonesimulator/2013.build/Objects-normal/i386/LTJumpToPositionViewController.o
ld: 3 duplicate symbols for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Я получаю ошибку выше в xcode, только когда я пытаюсь встроить симулятор (на любом устройстве iOS, которое я могу собрать без ошибок). У меня есть три класса:
1.LTGlobalResultsViewController 2.LTJumpToMeViewController 3.LTJumpToPositionViewController
Все три были созданы в xcode, но оба 2 и 3 были изменены вне xcode и затем восстановлены.
@Property bool leagueTableLoaded определяется в заголовке для всех трех. он объявлен как:
@property bool leagueTableLoaded;
Что именно вызывает эту ошибку? Я пробовал следующее:
Я пытался переименовать leagueTableLoaded в разных классах, но это не исправляет.
Я попытался удалить мои файлы производных данных вручную в папке library/developer/xcode.
По другим вопросам я проверил, импортирую ли я файл.m. Это не вариант. Ошибка Apple Mach-O Linker ("дублированный символ")
Любые другие предложения или советы? Спасибо Джеймс
ДОПОЛНЕНИЕ: По запросу, пожалуйста, найдите все выдержки из моих файлов.h и.m, которые ссылаются на leagueTableLoaded или любой из вариантов, которые я создал при попытке обойти эту ошибку:
LTJumpToMeViewController.h
@property bool leagueTableLoadedMe;
LTJumpToMeViewController.m
@implementation LTJumpToMeViewController
bool leagueTableLoaded = false;
LTGlobalResultsViewController.h
@property bool globalLeagueTableLoaded;
LTGlobalResultsViewController.m
@implementation LTGlobalResultsViewController
bool leagueTableLoaded = false;
LTJumpToPositionViewController.h
@property bool leagueTableLoadedPos;
LTJumpToPositionViewController.m
@implementation LTJumpToPositionViewController
bool leagueTableLoaded = false;
Я могу предоставить больше информации, если требуется!
4 ответа
В связи с этим это было вызвано тем, что leagueTableLoaded bool определен как в LTGlobalResultsViewController.m, так и в LTJumpToPositionViewController.m.
Удаление одного из них решило проблему. Хотя я не уверен, почему это было там в первую очередь! Надеюсь, что это помогает всем, кто испытывает ту же проблему! Джеймс
Для меня возникла ошибка с двойным символом, когда я отсутствующим образом включил файл.m вместо.h (Почему автозаполнение Xcode даже показывает мне файлы.m?!)
Во втором контроллере представления вы ошибочно #import "First.m", проверьте, что это должен быть файл first.h, поэтому замените его на first.h. Это работает для меня.
Ошибка Xcode "Duplicate Symbol", вызывающая ошибку Apple Mach-O Linker, вызвана дублированием символов в Project. Шаги, чтобы избежать ошибки
- Перейти к проекту -> Цель ->Фазы сборки ->Компилировать исходники
- Проверьте наличие дубликата файла (файл реализации)
- Удалите файл и добавьте его снова
- Очистить и запустить проект снова
Это сработало для меня. Надеюсь, поможет