Обновлен до Xcode 4 - Бесконечный поток дублированных ошибок символов, вызывающих ошибки сборки
Все отлично работало в 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. Оба "повторяющихся символа" относятся к SAME FILE, но они используют разные пути. Если бы у меня все еще был XCode 3, я бы просто попробовал исключить эти библиотеки из пути сборки, но я понятия не имею, как это можно сделать в Xcode 4. Я пробовал все до конца, чтобы удалить библиотеку и все связанные с ней файлы из моего проекта, но когда я это сделаю, я просто получаю тот же тип ошибки для другой библиотеки в каталоге AdWhirl.
Это невероятно сложно, потому что перед моим обновлением все работало плавно, и я был готов представить свой двоичный файл. Если у кого-нибудь есть какие-либо советы, id будет более чем счастлив попробовать. Спасибо!
Ответы
Ответ 1
Я столкнулся с подобной проблемой и разрешил ее, отредактировав мои настройки сборки:
- Выберите
Project Navigator
из списка навигаторов слева (⌘-1
).
- Выберите файл проекта.
- Выберите цель из списка, который появляется
в области редактора.
- Перейдите на вкладку
Build Phases
.
- Отметьте
Link Binary with Libraries
и/или Compile Sources
для
дублированная библиотека.
Теперь я не использую одну и ту же конфигурацию библиотеки или проекта, поэтому это может быть вне базы.
Ответ 2
Убедитесь, что вы не импортируете файлы .m.
Эта ошибка вызвала бесконечные проблемы для меня.
Ответ 3
Я не уверен в вашей настройке, но у меня была аналогичная проблема, и я исправил ее, изменив местоположение сборки. Я установил его на абсолютный путь в xcode 3 и забыл изменить этот параметр в xcode 4. Изменение параметра Derived Data сразу устранило все мои ошибки. Эта опция находится в настройках- > местоположениях
Ответ 4
Я просто исправил эту проблему, заменив @class на оператор #import в файле заголовка для одного из моих классов.
То, что теоретически должно работать только с объявлением @class (и #import в экземпляре реализации), просто не захочет компилироваться с ошибкой "дублировать символ".
Итак, просмотрите свои команды @class и #import.
Ответ 5
Я обнаружил, что у меня были старые объектные файлы в исходных папках из старой сборки Makefile. Когда я добавил исходную папку в XCode, я случайно добавил как исходные, так и объектные файлы. Это привело к дублированию символов. Удалены файлы .o и .lo из моих исходных папок.
В моей исходной папке также была папка .libs из другой старой сборки. Это также содержало файлы .o. Удаление их решило проблему.