Обновлен до Xcode 4 - Бесконечный поток ошибок повторяющихся символов, вызывающих ошибки сборки - PullRequest
10 голосов
/ 13 марта 2011

Вчера все работало отлично в Xcode 3 до того, как я обновился. Поэтому я завершил обновление, перезагрузил компьютер и открыл свой старый проект. Мне пришлось перенастроить несколько настроек, таких как пути заголовков, чтобы я мог начать компиляцию. Я использую AdWhirl для посредничества в рекламе, и в этот момент мои ошибки начинают читать что-то вроде

   duplicate symbol _OBJC_METACLASS_$_SBJSON in /Users/Admin/Desktop/TMapLiteAdwhirl/AdWhirl/MMSDK/libMMSDK.a(SBJSON.o) and 
/Users/Admin/Library/Developer/Xcode/DerivedData/TruxMapLite-bgpylibztethnlhkfkdumpvrjvgy/Build/Intermediates/TruxMapLite.build/Debug-iphoneos/TruxMapLite.build/Objects-normal/armv6/SBJSON.o for architecture armv6

Библиотека, на которую она ссылается, является SDK для одной из рекламных сетей, которые я включаю в AdWhirl. Оба «дублирующих символа» относятся к ОДНОМУ ФАЙЛУ, но они используют разные пути. Если бы у меня все еще был XCode 3, я бы просто попытался исключить эти библиотеки из пути сборки, но я понятия не имею, как это можно сделать в Xcode 4. Я пробовал все, вплоть до удаления библиотеки и всех связанных с ней файлы из моего проекта, но когда я это сделаю, я просто получу ошибку того же типа для другой библиотеки в каталоге AdWhirl.

Это невероятно расстраивает, потому что до моего обновления все работало гладко, и я был готов представить свой бинарный файл. Если у кого-нибудь есть какой-либо совет, я с радостью попробую. Спасибо!

Ответы [ 5 ]

5 голосов
/ 28 марта 2011

Убедитесь, что вы не импортируете файлы .m.

Эта ошибка вызвала у меня бесконечные проблемы.

5 голосов
/ 15 марта 2011

Я только что столкнулся с подобной проблемой и решил ее, отредактировав настройки сборки:

  1. Выберите Project Navigator из списка навигатора слева (⌘-1).
  2. Выберите файл проекта.
  3. Выберите вашу цель из списка, который появляется в области редактора.
  4. Переключиться на вкладку Build Phases.
  5. Проверьте Link Binary with Libraries и / или Compile Sources для дублированная библиотека.

Теперь я не использую ту же библиотеку или конфигурацию проекта, так что это может быть не так.

1 голос
/ 24 марта 2011

Я не уверен в вашей настройке, но у меня была похожая проблема, и я исправил ее, изменив место сборки.Я установил абсолютный путь в xcode 3 и забыл изменить этот параметр в xcode 4. Изменение параметра «Производные данные» немедленно исправило все мои ошибки.Эта опция находится в настройках-> местоположения

0 голосов
/ 24 июня 2012

Я обнаружил, что в моих исходных папках были старые объектные файлы из старой сборки Makefile. Когда я добавил исходную папку в XCode, я случайно добавил и исходные, и объектные файлы. Это привело к этим дублированным ошибкам символа. Помогло удаление файлов .o и .lo из моих исходных папок.

В моей исходной папке была также папка .libs из другой старой сборки. Это также содержало файлы .o. Удаление их решило проблему.

0 голосов
/ 28 апреля 2011

Я только что исправил эту проблему, заменив @class на оператор #import в заголовочном файле для одного из моих классов.

То, что теоретически должно работать только с объявлением @class (и #import в аналоге реализации), только чтоне нужно компилировать с ошибкой «дублированный символ».

Итак, просмотрите ваши операторы @class и #import.

...