6 дублирующих символов для архитектуры i386

duplicate symbol _OBJC_METACLASS_$_SBJsonParser in:
    /Users/Gaditek/Library/Developer/Xcode/DerivedData/DietBet-gyhoyhmdrobtqregldjyixtgmize/Build/Intermediates/DietBet.build/Debug-iphonesimulator/DietBet.build/Objects-normal/i386/SBJsonParser.o
    /Users/Gaditek/Desktop/AliMaisamProjects/Dietbet/DietBet/libfacebook_ios_sdk.a(SBJsonParser.o)
duplicate symbol _OBJC_CLASS_$_SBJsonParser in:
    /Users/Gaditek/Library/Developer/Xcode/DerivedData/DietBet-gyhoyhmdrobtqregldjyixtgmize/Build/Intermediates/DietBet.build/Debug-iphonesimulator/DietBet.build/Objects-normal/i386/SBJsonParser.o
    /Users/Gaditek/Desktop/AliMaisamProjects/Dietbet/DietBet/libfacebook_ios_sdk.a(SBJsonParser.o)
duplicate symbol _OBJC_IVAR_$_SBJsonWriter.sortKeys in:
    /Users/Gaditek/Library/Developer/Xcode/DerivedData/DietBet-gyhoyhmdrobtqregldjyixtgmize/Build/Intermediates/DietBet.build/Debug-iphonesimulator/DietBet.build/Objects-normal/i386/SBJsonWriter.o
    /Users/Gaditek/Desktop/AliMaisamProjects/Dietbet/DietBet/libfacebook_ios_sdk.a(SBJsonWriter.o)
duplicate symbol _OBJC_IVAR_$_SBJsonWriter.humanReadable in:
    /Users/Gaditek/Library/Developer/Xcode/DerivedData/DietBet-gyhoyhmdrobtqregldjyixtgmize/Build/Intermediates/DietBet.build/Debug-iphonesimulator/DietBet.build/Objects-normal/i386/SBJsonWriter.o
    /Users/Gaditek/Desktop/AliMaisamProjects/Dietbet/DietBet/libfacebook_ios_sdk.a(SBJsonWriter.o)
duplicate symbol _OBJC_METACLASS_$_SBJsonWriter in:
    /Users/Gaditek/Library/Developer/Xcode/DerivedData/DietBet-gyhoyhmdrobtqregldjyixtgmize/Build/Intermediates/DietBet.build/Debug-iphonesimulator/DietBet.build/Objects-normal/i386/SBJsonWriter.o
    /Users/Gaditek/Desktop/AliMaisamProjects/Dietbet/DietBet/libfacebook_ios_sdk.a(SBJsonWriter.o)
duplicate symbol _OBJC_CLASS_$_SBJsonWriter in:
    /Users/Gaditek/Library/Developer/Xcode/DerivedData/DietBet-gyhoyhmdrobtqregldjyixtgmize/Build/Intermediates/DietBet.build/Debug-iphonesimulator/DietBet.build/Objects-normal/i386/SBJsonWriter.o
    /Users/Gaditek/Desktop/AliMaisamProjects/Dietbet/DietBet/libfacebook_ios_sdk.a(SBJsonWriter.o)
ld: 6 duplicate symbols for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Подскажите пожалуйста, как исправить эту проблему?

9 ответов

Решение

Как видите, компоновщик жалуется, что SBJsonWriter а также SBJsonParser оба определены в libfacebook_ios_sdk.a и как отдельные файлы в вашем проекте.

Вы не можете действительно решить проблему, кроме как удалить отдельные файлы из вашей цели.

Проблема заключается в том, что разработчики libfacebook_ios_sdk.a решили, что было бы неплохо использовать инфраструктуру json (не обращая внимания на конфликты с кодом, используемым в хост-приложении). Это распространенная проблема с SDK на iOS.

Я решил проблемы, пожалуйста, следуйте шаг.

  1. Перейти к цели приложения
  2. Компилировать источники
  3. Удалите дубликат файла, используя (-).

Проблема, скорее всего, из-за опечатки при включении заголовка. Убедитесь, что файл заголовка (.h) включен, а не файл реализации (.m).

Это была проблема для меня

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

Вы должны были дважды добавить SBJsonParser.h/.m в проект.

Если, прежде всего, проблема не решена, проверьте, объявляете ли вы константу в двух разных файлах (я имею в виду, проверьте, есть ли у вас два одинаковых (.h &.m) файла. В вашем проекте не должно быть дубликатов файлов).

Если вы импортируете любой из ваших.h файлов дважды, это произойдет.

Например, если вы импортируете какой-либо файл.h как....ViewController.h, так и....ViewController.m, это произойдет.

Вы также можете:

  1. копия .h файлы конфликта pods,
  2. Удалить эти конфликты pods от podfile,
  3. Скопируйте эти .h файлы для проецирования.
  4. Переименовать в #import</.h> в ".h" из скопированных .h файлы.
  5. Делать pod install и булид.

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

Кажется, у вас, вероятно, есть файл.h/.m, включенный дважды, например, дважды включенный сторонний API/ библиотека, или вы создали новый файл, имя которого точно совпадает с уже имеющимся файлом в проекте. Проверьте, есть ли у вас файлы, которые дублируются в папке вашего проекта.

Другие вопросы по тегам