У меня сейчас тот же вопрос с вышеуказанным названием, но я еще не нашел правильного ответа. Я получил ошибку:
/Users/nle/Library/Developer/Xcode/DerivedData/TestMoboSDK-Client-cgodalyxmwqzynaxfbbewrooymnq/Build/Intermediates/TestMoboSDK-Client.build/Debug-iphonesimulator/TestMoboSDK-Client.build/Objects-normal/x86_64/MoboSDK.o
/Users/nle/Library/Developer/Xcode/DerivedData/TestMoboSDK-Client-cgodalyxmwqzynaxfbbewrooymnq/Build/Products/Debug-iphonesimulator/libMoboSDK.a(MoboSDK.o)
duplicate symbol _OBJC_METACLASS_$_MoboSDK in:
/Users/nle/Library/Developer/Xcode/DerivedData/TestMoboSDK-Client-cgodalyxmwqzynaxfbbewrooymnq/Build/Intermediates/TestMoboSDK-Client.build/Debug-iphonesimulator/TestMoboSDK-Client.build/Objects-normal/x86_64/MoboSDK.o
/Users/nle/Library/Developer/Xcode/DerivedData/TestMoboSDK-Client-cgodalyxmwqzynaxfbbewrooymnq/Build/Products/Debug-iphonesimulator/libMoboSDK.a(MoboSDK.o)
ld: 75 duplicate symbols for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Любая помощь приветствуется.
Наконец я выясняю причину этой ошибки, потому что я добавил -ObjC
в Other Linker Flags
. После удаления этого значения я могу успешно построить свой проект, но я не знаю почему. Кто-нибудь может объяснить это?
ios
objective-c
xcode5
подветренный
источник
источник
#include
«d или#import
» d что - то (вероятно, MoboSDK, что бы это ни) больше , чем один раз.GoogleConversionTrackingSDK-iOS-3.0
в свой проект. До этого все работало нормально. Я тоже пытался ее удалить, но ошибка все-таки произошла.Ответы:
Означает, что вы загрузили одни и те же функции дважды. Поскольку проблема исчезает после удаления
-ObjC
изOther Linker Flags,
этого означает, что эта опция приводит к тому, что функции загружаются дваждыиз технического Q & A
https://developer.apple.com/library/content/qa/qa1490/_index.html
источник
-ObjC
флага. Поэтому мне нужно сохранить этот флаг в настройках моего проекта. Не могли бы вы предложить другое решение?Для меня изменение «Нет общих блоков» с Да на Нет (в разделе «Цели» -> «Настройки сборки» -> «Apple LLVM - генерация кода») решило проблему.
источник
NO
? В чем причина этого?Глупый, но убедитесь, что вы не
#import
редактировали.m
файл по ошибкеисточник
В моем случае я просто создал заголовочный файл для определения константных строк, например:
Я решил этот сценарий с помощью
static
:источник
extern
вместоstatic
:extern NSString * const kNotificationName;
. Что странно, потому что вы обычно не добавляли такой префикс, и он работал нормально ..AppStrings.h
являются константами, однако это вызовет хаос, если вы хотите глобальную изменяемую переменную, поскольку каждый исходный файл, который включает файл заголовка, будет иметь свою собственную копию переменной. Это плохое решение.Я обнаружил, что принятый ответ касается проблемы, но не помог мне решить ее, надеюсь, этот ответ поможет решить эту очень неприятную проблему.
«Означает, что вы загрузили одни и те же функции дважды. Поскольку проблема исчезает после удаления -ObjC из других флагов компоновщика, это означает, что в результате этой опции функции загружаются дважды:»
С точки зрения непрофессионала, это означает, что в нашем проекте есть два файла с одинаковым именем. Может быть, вы объединяете один проект в другой? Посмотрите на ошибки над ошибкой «дубликаты символов», чтобы увидеть, какая папка дублируется, в моем случае это был BLoginViewController.
Например, на изображении ниже вы можете видеть, что у меня есть два BImageViewControllers, для меня это то, что вызывало проблему.
Как только я удалил один, то проблема исчезла :)
источник
У меня такая же проблема. В Xcode 7.2 в пути Project Target> Build Setting> No Common Blocks я меняю его на NO.
источник
Происходит также, когда вы объявляете переменные const с одинаковыми именами в разных классах:
в файле Message.m
в файле Chat.m
источник
Это произошло со мной, когда я принял всплывающее окно «рекомендуемые настройки» для проекта, который я разработал два года назад в Objective-C.
Проблема заключалась в том, что когда вы приняли обновление «рекомендуемых настроек», Xcode автоматически изменил или добавил некоторые настройки сборки, в том числе
GCC_NO_COMMON_BLOCKS = YES;
.Это сделало сборку неудачной с
duplicate symbol
ошибкой в моем обновленном проекте. Поэтому я изменилNo Common Block
кNO
в моих настройках сборки и исчезла ошибка.источник
Самый быстрый способ найти дубликат:
источник
Следующие шаги решили проблему для меня.
источник
Удалите -ObjC из других флагов компоновщика или проверьте, что вы импортировали любой файл .m вместо .h по ошибке.
источник
.m"
я заметил, что импортировал файл .m вместо .h и после исправления, что он просто работал!Talk is cheap, show me the code!
Ура!Моя ситуация с каким-то устаревшим проектом, открытым в Xcode 7.3, была:
затем список двух несвязанных файлов. o, затем это повторили пару раз, а затем, наконец:
Для меня это решило изменение объявления enum с:
к этому:
Если у кого-то есть объяснение этому, пожалуйста, просветите меня.
источник
Определение одной и той же переменной в @implementation в нескольких классах также может вызвать эту проблему.
источник
В моем случае в папке было два файла с одинаковым именем
источник
У меня сработало
источник
Я столкнулся с этой проблемой после установки Cocoapods. Теперь происходит каждый раз, когда я обновляю некоторые стручки. Решение, которое я нашел:
Перейти к терминалу:
Также отметьте пункт «Всегда встраивать Swift-библиотеки» в настройках сборки. Он должен быть «блеклым», указывая, что он использует конфигурацию по умолчанию. Если для него установлено значение «ДА», нажмите «Удалить», чтобы вернуть его к конфигурации по умолчанию. Это остановило поведение.
источник
Для меня во время Xcode8 рекомендуемые настройки проекта обновляют «No Common Blocks» до YES, что вызывает эту проблему.
источник
Сегодня я получил ту же ошибку. Ключевое слово ошибки является
duplicate
. Я исправляю это:источник
Убедитесь, что вы не импортировали файл .m случайно, возможно, вы захотите удалить полученные данные в окне проектов, а затем снова собрать и запустить их.
источник
Для всех, у кого есть эта проблема, я не видел своего решения ни в одном из этих ответов.
После конфликта слияния .pbxproj, который был разрешен вручную (хотя и плохо), в .pbxproj были дублированные ссылки на отдельные файлы классов. Удаление из Project> Build Phases> Compile Sources исправило все для меня.
Надеюсь, это поможет кому-то в дальнейшем.
источник
ld: X duplicate symbols for architecture x86_64
. Исправлено это путем удаления исходных файлов, упомянутых в сообщении об ошибке, и повторного добавления их в проект.Подобно Juice007, я объявил и инициализировал переменную типа C в двух разных файлах .m (которые не были импортированы!)
однако этот метод объявления и инициализации переменной, даже в .m, даже в @implementation, предоставляет ей глобальную область видимости. Ваши варианты:
Объявите его как статический, чтобы ограничить область видимости классом:
Удалите инициализацию (которая заставит два класса совместно использовать глобальную переменную):
Объявите это как собственность:
Объявите это как правильный iVar в @interface
источник
В моем случае у меня было два
main()
метода, определенных в моем проекте, и удаление одного решило проблему.источник
Недавно была головная боль в поисках источника ошибки. Мне было интересно, когда я узнал, что мое приложение не хочет компилироваться просто потому, что у меня был следующий фрагмент кода в разных классах:
Надеюсь, что это может кому-то помочь.
источник
Я надеюсь, что это обязательно поможет вам
Я получил ту же ошибку 3 дубликата символов для архитектуры x86_64
в моем случае я скопировал код из другого файла того же проекта, например. Код файла Am для Bm и после компиляции я получил ошибку в качестве упоминания. и я должен решить ошибку, изменив имя глобальной переменной.
эта ошибка возникла в моем случае из-за одного и того же объявления для глобальной переменной в обоих файлах.
источник
Я получил ту же ошибку, когда я добавил хранилище pod
для уже добавленного исходного кода (SWRevealViewController) из gitHub. Таким образом, ошибка будет исправлена путем удаления исходного кода или хранилища pod.
Дело № 2:
Во второй раз эта ошибка появилась, когда я объявил константу в файле .h .
источник
Ответы выше не сработали для меня. Вот как я обошел это:
1) в Finder удалите всю папку Pods и файл Podfile.lock 2) закройте проект xcode 3) запустите установку pod в терминале 4) откройте проект xcode, выполните команду clean build
После этого у меня сработало.
источник
Та же самая проблема произошла со мной, когда я интегрировал проект lob в свой проект.
На самом деле у проекта lob также есть файлы AFNetworking, поэтому я удаляю файлы .m из проекта lob.
На самом деле .m файлы конфликтуют с файлами моего проекта POd / AFNetworking / .m
источник
В Xcode 6.3.2. Я проверил все возможности, как показано ниже
1: у меня нет импорта файла .m в моем проекте.
2: Удалено
-ObjC
из флага другого компоновщика .3: удалены все мои производные данные .
Тем не менее я получаю ту же ошибку. Я удалил эту ошибку, удалив любое объявление переменной из
.pch
файла . в моем случае я объявилAppDelegate
объект в.pch
файле. наконец я нашел причину, которая вызывает ошибку. поэтому я удаляю объявление любой переменной из файла .pch и мой рабочий шарм проекта.источник
Еще одна глупая ошибка, которая вызовет эту ошибку - повторяющиеся файлы. Я случайно скопировал несколько файлов дважды. Сначала я пошел в Targets -> Build Phases -> Compile sources. Там я заметил несколько файлов в этом списке дважды и их расположение.
источник
У меня также есть эта ошибка сегодня. Это потому, что я определил значение const в
.m
файле. Но я определил другой.m
файл, который также включил это значение const. Это означает, что у него есть два одинаковых значения const. Так появляется эта ошибка. И мое решение заключается в добавлении ключевого слова "static
" перед const value.such как:И тогда я строю проект, он не сообщит об этой ошибке.
источник