ld: xx дубликаты символов для архитектуры armv7 Xcode Project
Привет всем, у меня есть проект XCode, который выдает мне эту ошибку каждый раз, когда я пытаюсь построить проект:
ld: xx дубликаты символов для архитектуры armv7 Clang проекта Xcode: ошибка: сбой команды компоновщика с кодом выхода 1...
Я гуглил, и большинство решений говорят, чтобы избавиться от дубликатов файлов в разделе фазы сборки ->Compile Resources проекта или изменить импорт.m в.h в некоторых файлах. Проблема в том, что список скомпилированных ресурсов даже не отсортирован, и я даже не знаю, какие файлы нужно исправить, поскольку в моем проекте много файлов. Любой совет о том, как это убрать?
3 ответа
У меня была эта ошибка иногда, и проблема всегда в этом. У меня есть статическая переменная в.m одного класса, а другая статическая переменная с тем же именем в другом.m. Видимо компилятору не нравится, когда есть две статические переменные с одинаковыми именами, в разных файлах или нет. Поэтому проверьте наличие любых дубликатов имен статических переменных или макросов #define. Кроме того, это могут быть не дубликаты файлов или файлы, импортированные дважды. Если импортированы два разных файла, но у каждого есть переменная или макрос с одинаковым именем, произойдет ошибка, потому что компилятор не может определить, какой из них использовать. Конфликтующие переменные должны быть в файлах, упомянутых в ошибке. Надеюсь это поможет!
В вашем проекте есть определенные файлы, которые, возможно, были импортированы дважды, попробуйте проанализировать журнал ошибок, он должен ссылаться на файл, где где-то вы должны получить ошибку, как "YourViewCOntroller.O", он находит двойные файлы, поиск "YourViewCOntroller"в навигаторе вашего проекта, вам нужно удалить эти файлы из вашего проекта Xcode и затем собрать заново
Если вы используете Cocoapods, как я, вы можете обнаружить, что другие ответы не помогают, потому что дубликаты генерируются файлом pod автоматически.
Что мне помогло, так это посмотреть список дублирующихся символов, например:
повторяющийся символ _OBJC_METACLASS_$_AFImageCache в:
___ / Строительные / Продукты / Debug-iphoneos / libPods-AFNetworking.a (UIImageView + AFNetworking.o)
___ / Строительные / Продукты / Debug-iphoneos / libAFNetworking.a (UIImageView + AFNetworking.o)
ld: 214 повторяющихся символов для архитектуры armv7 clang: error: сбой команды компоновщика с кодом выхода 1 (используйте -v для просмотра вызова)
Затем перейдите в свой проект / цель " Настройки сборки" -> "Другие флаги компоновщика" и удалите ссылку на дубликат модуля (в моем случае AFNetworking).
Очистить, построить снова, и это должно работать.
-
Насколько я могу судить, это может происходить, потому что один из других модулей ссылается на AFNetworking, что приводит к дублированию.