Когда я пытаюсь запустить свой проект Xcode, он выдает ошибку с сообщением о том, что у меня есть повторяющиеся символы. Я посмотрел в Интернете, где найти эти дубликаты, но мне не повезло:
Любые идеи, как это исправить?
ios
objective-c
xcode
linker-errors
Picciano
источник
источник
Ответы:
Судя по ошибкам, FacebookSDK.framework уже включает классы Bolts.framework. Попробуйте удалить из проекта дополнительные Bolts.framework.
источник
Мне помогло переключить настройку компилятора «No Common Blocks» на NO: В этом есть смысл, настройка объясняется здесь: Для чего используется GCC_NO_COMMON_BLOCKS?
источник
Используя Xcode 8, параметр «Обновить проект до рекомендуемых параметров» включил для моего проекта «Нет общих блоков».
Вернув его обратно в положение ВЫКЛ, все исправило.
источник
Я испортил свои модули во время перехода на более раннюю версию модуля, и мне удалось решить проблему с повторяющимися символами для архитектуры arm64 , удалив модули и установив их снова с помощью:
источник
Для меня это было то, что я по ошибке импортировал файл как .m, а не .h
источник
Другое решение:
Тогда вы увидите в результатах поиска 1 или 2 файла.
Удалите один из них и снова скомпилируйте . Теперь он должен перекомпилировать, потому что остался только один файл и больше не будет конфликтов для сборки.
Если это не сработает, вероятно, в файле есть ошибки, и вам следует удалить их все, а затем перекомпилировать. Он должен снова работать.
источник
При обновлении до Xcode 8 я получил сообщение о необходимости обновления до рекомендуемых настроек. Я согласился, и все было обновлено. У меня начались проблемы со временем компиляции:
Дублирующий символ для XXXX Дублирующий символ для XXXX Дублирующий символ для XXXX
Всего 143 ошибки. Пошел в Target-> Build settings -> No Common Blocks -> Set it to NO. Это решило проблему. Проблема заключалась в том, что интегрированные проекты имели общие блоки кода и, следовательно, не могли их скомпилировать. Объяснение можно найти здесь .
источник
Эта ошибка возникает, когда компоновщик пытается связать файлы obj. Вот несколько причин, по которым я мог придумать эту ошибку:
Дублированная функция / класс определяется в двух разных местах / файлах в проекте, и только один из них должен был компилироваться для любого варианта команды сборки. Но каким-то образом оба этих файла были скомпилированы в вашем проекте. Поэтому вам нужно проверить свои условия if-else или другие зависимости, которые добавляют файлы src в список файлов, необходимых для компиляции, и удалить ненужный файл для вашей конкретной команды сборки.
Дублированная функция / класс случайно определяется в двух разных местах / файлах проекта. Удалите неправильное определение.
Очистите каталог OBJ перед повторной сборкой, там могут быть старые файлы obj из ваших предыдущих сборок, которые могут вызывать этот конфликт.
PS Я не эксперт, но вот как я решил эту проблему, когда столкнулся с ней. :)
источник
Если вы переходите на Xcode 7 или 8 и открываете действительно старый проект, я столкнулся с этой проблемой:
в
SomeConstFile.h
в
SomeConstFile.m
Более ранние версии компилятора предполагали, что определение в файле заголовка было extern, поэтому включение SomeConstFile.h повсюду было нормальным.
Теперь вам нужно явно объявить эти константы как extern:
в
SomeConstFile.h
источник
Ниже патч работает у меня .. :)
Установка его обратно в NO решила проблему!
источник
Ну, иногда при использовании SDK, такого как FB, или библиотек, таких как Vuforia или GoogleAnalytics, добавление примеров проектов может вызвать проблему, заключающуюся в том, что они уже включают Frameworks и тому подобное, поэтому вы должны убедиться, что не повторяете символы, которые вы добавляете вручную, пока они уже включены в образцы
источник
Для меня проблема заключалась в стиле создания const, который отлично работал до этой iOS8 .. У меня было несколько строк:
в моем файле .h. Шесть строк, например, привели к 636 файлам компоновщика, когда для общих блоков было установлено значение NO. (14k + если ДА). Строки переместились в .m после удаления .h объявления значения, и компиляция прошла хорошо.
Надеюсь, это поможет другим!
источник
В моем случае причина была слишком глупой:
У меня был файл Constant.h, в котором я определил макросы. Подумал сделать там NSString. и сделал это:
это вызвало проблему дублирования символов для архитектуры arm64 и команда компоновщика завершилась неудачно с кодом выхода 1. Удаление строки const NSString сработало для меня.
источник
проверьте ваш включаемый файл, у меня возникла эта проблема, потому что я случайно # импортировал "filename.m" вместо "filename.h", автозамена (табуляция) поставила "m", а не "h".
источник
Из-за ошибок может показаться, что любые классы появляются несколько раз. Найдите и удалите те классы, которые будут работать.
Я создаю файл AppDelegate.h и .m, создавая несколько раз. Итак, эта ошибка произойдет. Наконец, найдите и удалите те классы, которые у меня работают нормально.
источник
Чтобы решить эту проблему, перейдите к этапам сборки и выполните поиск повторяющихся файлов, таких как (facebookSDK, unityads) и удалите (extension file.o), а затем создайте снова.
источник
Для меня я создал метод, называемый
sampleMethod
в ViewController_A, и создал тот же метод в ViewController_B, это вызвало у меня эту ошибку, затем я изменил имя метода в ViewController_B наsecondSampleMethod
. Это исправило ошибку.Кажется, хорошая возможность уменьшить код и не дублировать один и тот же код во многих местах.
Я попытался изменить блоки «Нет общего» с «Да» на «Нет», а затем включить возможность тестирования с «Да» на «Нет». Это не сработало. Я проверял повторяющиеся файлы также на этапах сборки, но дубликатов файлов нет.
источник
У меня возникла эта проблема, потому что я лениво определял переменную в моем .m вне метода, а затем в другом файле .m я определял другую переменную с тем же именем вне метода. Это вызывало проблему с дублированием имени глобальной переменной.
источник
Проблема для меня заключалась в том, что я вручную включил фреймворк, но затем также включил тот же фреймворк в CocoaPods, не зная, что я это сделал. Как только я удалил одно или другое, проблема исчезла
источник
См. Статью Ошибка повторяющегося символа при добавлении подкласса NSManagedObject, повторяющаяся ссылка
источник
Мне удалось устранить эту ошибку, в которой говорилось: «158 повторяющихся символов для архитектуры armv7, 158 повторяющихся символов для архитектуры arm64» --- Если это то, что вы тоже получаете, то это означает, что вы пытаетесь скомпилировать файл, который импортирует или наследование фреймворка или статической библиотеки, имеющей ссылки на код или файлы C ++. Простой способ справиться с этим - изменить расширение вашего файла .m на .mm. Вот как это происходит, если вы используете Objective C, хотя не уверен в Swift.
Также в настройках сборки - вы можете обновить «другие флаги компоновщика» до -lc ++
источник
Если кто-то экспериментирует с этим, работая с Flutter, не пытайтесь деинтегрировать pod, pod init.
Как я решил, это запустить flutter clean, flutter run -d [iOS Device]
Надежда может кому-нибудь помочь.
источник
Plz Измените настройку.
Шаг 1. Перейдите в ЦЕЛИ -> Настройки сборки -> Нет общих блоков -> Нет
Шаг 2: перейдите в ЦЕЛИ -> Настройки сборки -> включить возможность тестирования -> Нет
источник