Ошибка компоновщика Mach-O на Xcode 4.6

У меня есть приложение iOS на Xcode 4.6, и когда я недавно пытался создать и запустить в симуляторе iPhone 6.1, я получил "ошибку компоновщика Mach-O". Он продолжал говорить:

ld: 17 повторяющихся символов для архитектуры i386 clang: ошибка: команда компоновщика не сработала с кодом выхода 1 (используйте -v для вызова вызова)

Кто-нибудь знает, как это решить?

Большое спасибо!

Ответы

Ответ 1

Просто перейдите к "Build Phases" → "Compile Sources" и найдите дубликаты классов.

Ответ 2

Проверьте, есть ли у вас файлы < *. m#import! Похоже, это была моя ошибка...

Ответ 3

В моем примере я объявил

extern NSString const *keyString

в двух разных файлах. Я переименовал один из них, и он решил мою проблему.

Ответ 4

  • Выйти из Xcode
  • Перезагрузите систему.
  • Выберите Xcode → Настройки → Местоположение
  • В локациях вы увидите "Производные данные". Нажмите на значок стрелки рядом с дорогой.
  • Это откроет папку, содержащую "Производные данные", удалив ее.
  • Очистите продукт и запустите

    если все еще не работает, то

    Настройки сборки > Включить биткод > Нет введите описание изображения здесь

Ответ 5

В моем случае это были константы.

NSString *const cellID = @"cellID";

Эта строка была написана в двух файлах .m. После добавления ключевого слова static в начале проблема была решена.

Эта проблема может быть воссоздана и в новом проекте. Вы могли бы подумать, что определение констант в разных файлах .m не будет иметь никакого эффекта, поскольку они являются частными. Но я не знаю, как компилятор обрабатывает вещи за сценой. Кроме того, когда вы нажимаете на проблему из навигатора проблем, она не открывает страницу в редакторе, как для любой другой проблемы. Действительно расстраивает.

Ответ 6

Я не уверен, что смогу дать вам решение, но я поделюсь ответом, так как это случилось со мной и на xCode 4.6. Я добавил заголовок класса C и файл реализации и включил их в main. Затем я решил удалить этот новый заголовок и реализацию класса C. Когда я закончил добавление нового c class/header снова с тем же именем и вызовами функций, я закончил с вашей ошибкой.

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

Ответ 7

Удостоверьтесь, что у вас нет не-мгновенных методов с одним и тем же именем в нескольких классах (например, если у меня есть два диспетчера видимости, которые очень похожи, чтобы быстро перемещаться, я копирую и вставляю код с одного диспетчера представлений на второй и у них обоих есть методы, называемые такими же: NSMutableString * filterStringFromStringWithFilter (NSString * string, NSString * filter)), тогда приложение запутывается, какой из этих методов использовать, поскольку они оба доступны, RENAME IT во втором классе и изменить любой вызывает этот метод в этом классе, и вы устранили путаницу. Разве мы не хотим, чтобы все было ясно?

Ответ 8

Если вы хотите изменить значение как в буксировке другого класса. Не забывайте отмечать статическими ключевыми словами.

или clang произведет такую ​​ошибку ниже без интерпретации значений.

Ошибка компоновщика Apple Mach-O clang: ошибка: сработала команда компоновщика с кодом выхода 1

Ответ 9

Когда вы реорганизуете функцию класса, вы также иногда получаете эту ошибку. Просто перейдите в Product- > Clean and rebuild.

Ответ 10

Сборка фаз "- > " Скомпилировать источники "нажмите кнопку" Проверить настройки "

он исправит ваш проект