Повторяющиеся символы для архитектуры arm64


когда я пытаюсь запустить свой проект Xcode, он терпит неудачу с ошибкой, указывающей, что у меня есть дубликаты символов. Я посмотрел в интернете, где найти эти дубликаты, но не повезло:

есть идеи, как это исправить?

15 74

15 ответов:

из ошибок, казалось бы, что FacebookSDK.база уже включает в себя болты.классы фреймворка. Попробуйте снять дополнительные болты.рамки проекта.

для меня это помогло переключить параметр компилятора "нет общих блоков" на нет: Это в значительной степени, кажется, имеет смысл, настройка объясняется здесь: для чего используется GCC_NO_COMMON_BLOCKS?

используя Xcode 8, опция "обновить проект до рекомендуемых настроек "включила" нет общих блоков " для моего проекта.

повернув его обратно, чтобы выключить все исправлено.

для меня это было то, что я импортировал файл как a .м-нет .ч по ошибке

при обновлении до Xcode 8, я получил сообщение для обновления до рекомендуемых настроек. Я принял, и все было обновлено. Я начал получать проблему времени компиляции:

дубликат символа для XXXX Дублировать символ ХХХХ Дублировать символ ХХХХ

всего 143 ошибки. Зашел в Target -> Build settings -> No Common Blocks - > Set it to NO. Это решило проблему. Проблема заключалась в том, что интегрированные проекты имели общие блоки кода и, следовательно, не могли компилироваться оно. Объяснение можно найти здесь.

если вы переходите на Xcode 7 или 8 и открываете действительно старый проект, я столкнулся с этой проблемой:

на SomeConstFile.h

NSString * const kAConstant;

на SomeConstFile.m

NSString *const kAConstant = @"a constant";

более ранние версии компилятора предполагали, что определение в заголовочном файле было extern и поэтому включало SomeConstFile.ч все было нормально.

теперь вам нужно явно объявить эти запоры как extern:

на SomeConstFile.h

extern NSString * const kAConstant;

эта ошибка возникает, когда Компоновщик пытается связать файлы obj. Несколько причин, которые я мог бы придумать для этой ошибки являются:

  1. дублированная функция / класс определяется в двух разных местах / файлах в проекте, и только один из них должен был компилироваться для любого варианта команды сборки. Но каким-то образом оба эти файла были скомпилированы в вашем проекте. Поэтому вам нужно проверить свои условия if-else или другие зависимости, которые добавляют файлы src в список файлов необходимо скомпилировать и удалить ненужный файл для вашей конкретной команды сборки.

  2. дублированная функция / класс определяется случайно в двух разных местах / файлах в проекте. Удалите неправильное определение.

  3. очистите каталог OBJ перед повторной сборкой, там могут быть некоторые старые файлы obj из ваших предыдущих сборок, которые могут вызвать этот конфликт.

P. S Я не эксперт, но вот как я решил эту проблему, когда столкнулся с ней. :)

ниже патч работы для меня..:)

Step 1: Go to TARGETS -> Build Settings -> No Common Blocks -> No

Step 2: Go to TARGETS -> Build Settings -> enable testability -> No

установка его обратно в НЕТ решена проблема!

хорошо, иногда при использовании SDK, таких как FB или библиотеки , такие как Vuforia или GoogleAnalytics ,добавление образцов проектов может вызвать проблему, что они уже включают фреймворки и т. д., Поэтому вы должны убедиться, что не повторяете символы, которые вы добавляете вручную, пока они уже включены в образцы

для меня проблемой был стиль создания const, который отлично работал до этого iOS8.. у меня было несколько строк, как:

int const kView_LayoutCount = 3;

в моем .H-файл. Шесть строк, как в результате 636 файлов компоновщика, как только общие блоки были установлены в NO. (14к+, если да). Передвинул линии на место .м после зачистки .h объявления значения и компиляции было хорошо идти.

надеюсь, это поможет другим!

в моем случае причина была слишком глупа:

У меня была постоянная.H файл, где я определил макросы. Я думал сделать NSString там. и сделал это :

NSString const *kGreenColor = @"#00C34E";

это вызвало проблему дублирования символов для архитектуры arm64 и команде компоновщика ошибка с кодом выхода 1. удаление строки const NSString работало для меня.

от ошибок, казалось бы, любые классы появляются несколько раз.Найти и удалить, что классы он будет работать.

Я создаю AppDelegate.h и .m файл, создающий несколько раз. Так что эта ошибка возникает.Наконец найти и удалить, что классы это работает нормально для меня.

чтобы решить эту проблему, перейдите к этапам сборки и найдите дубликат файла например (facebookSDK, unityads) и удалить (файл расширения.о) потом опять строить .

другое решение состоит в том, чтобы: Выберите Proiect = = = > Target = = = > Build phase = = > Compile source ==> найдите файл, который указан выше ошибки (в вашем случае BFAppLinkBlaBlaBla.io).

тогда вы увидите либо 2 файла или 1 файл в результате поиска удалить один из них или все из них. Затем перекомпилируйте. Это должно сработать снова.

проверьте свой файл включения, у меня была эта проблема, потому что я случайно #импортировал "имя файла.m "вместо" имя файла.h", автозамена (вкладка) поставить" m "не"h".