Ошибка 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;

Что именно вызывает эту ошибку? Я пробовал следующее:

  1. Я пытался переименовать leagueTableLoaded в разных классах, но это не исправляет.

  2. Я попытался удалить мои файлы производных данных вручную в папке library/developer/xcode.

  3. По другим вопросам я проверил, импортирую ли я файл.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. Шаги, чтобы избежать ошибки

  1. Перейти к проекту -> Цель ->Фазы сборки ->Компилировать исходники
  2. Проверьте наличие дубликата файла (файл реализации)
  3. Удалите файл и добавьте его снова
  4. Очистить и запустить проект снова

Это сработало для меня. Надеюсь, поможет

Другие вопросы по тегам