Обновление до XCode 3.2.3 и iPhone 3.2 / 4.0 SDK внесло странную ошибку в мой процесс сборки.
У меня есть статическая библиотека Compton, которая сама зависит от Three20.Я строю Compton как зависимость от клиентских приложений, которые он поддерживает.
Когда я компилирую Compton как его собственный проект в режиме симулятора или устройства, 3.2 или 4.0 SDK, все компилируется нормально, без ошибок.
Когда я компилирую клиентское приложение, которое ссылается на Compton, используя SDK 3.2 или 4.0, симулятор, нацеленный на iPhone или iPhone / iPad на 3.2, все отлично работает, ошибок компиляции нет, и приложение работает в симуляторе должным образом.
Когда я компилирую точно такой же проект, не меняя ничего, кроме настроек сборки с симулятора на устройство, я получаю следующие ошибки компоновки, которые, как мне кажется, я не могу устранить после нескольких часов работы с #import
операторами, путями поиска,настройки сборки и т. д. Я действительно разочарован тем, что версии симулятора строятся и работают нормально, это похоже на крошечную проблему с конфигурацией.Я вставляю ошибки ниже, похоже, что классы Compton с точки зрения построения моего проекта в режиме устройства не могут «видеть» некоторые из трех20 заголовков.
Я использую транкВерсия Three20, вытащил сегодня.
Вот вывод ошибок компоновки:
Ld build/NewBlankComptonTemplate.build/Debug-iphoneos/NewBlankComptonTemplate.build/Objects-normal/armv7/NewBlankComptonTemplate normal armv7
cd /Users/wiley/iphone_projects/ComptonQuizzes/NewBlankComptonTemplate
setenv IPHONEOS_DEPLOYMENT_TARGET 4.0
setenv PATH "/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/opt/local/bin:/usr/local/git/bin"
/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc-4.2 -arch armv7 -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.0.sdk -L/Users/wiley/iphone_projects/ComptonQuizzes/NewBlankComptonTemplate/build/Debug-iphoneos -F/Users/wiley/iphone_projects/ComptonQuizzes/NewBlankComptonTemplate/build/Debug-iphoneos -filelist /Users/wiley/iphone_projects/ComptonQuizzes/NewBlankComptonTemplate/build/NewBlankComptonTemplate.build/Debug-iphoneos/NewBlankComptonTemplate.build/Objects-normal/armv7/NewBlankComptonTemplate.LinkFileList -dead_strip -ObjC -miphoneos-version-min=4.0 -framework Foundation -framework UIKit -framework CoreGraphics -framework AudioToolbox -framework AVFoundation -framework CFNetwork -framework MediaPlayer -framework MessageUI -framework MobileCoreServices -framework QuartzCore -framework StoreKit -framework SystemConfiguration -lxml2 -lz.1.2.3 /Users/wiley/iphone_projects/ComptonQuizzes/libs/Compton/src/build/Debug-iphoneos/libCompton.a -o /Users/wiley/iphone_projects/ComptonQuizzes/NewBlankComptonTemplate/build/NewBlankComptonTemplate.build/Debug-iphoneos/NewBlankComptonTemplate.build/Objects-normal/armv7/NewBlankComptonTemplate
Undefined symbols:
"_OBJC_CLASS_$_TTStyleSheet", referenced from:
objc-class-ref-to-TTStyleSheet in AppDelegate.o
"_OBJC_CLASS_$_TTURLAction", referenced from:
objc-class-ref-to-TTURLAction in AppDelegate.o
"_OBJC_CLASS_$_TTRoundedRectangleShape", referenced from:
objc-class-ref-to-TTRoundedRectangleShape in libCompton.a(ComptonStyleSheet.o)
"_OBJC_METACLASS_$_TTDefaultStyleSheet", referenced from:
_OBJC_METACLASS_$_ComptonStyleSheet in libCompton.a(ComptonStyleSheet.o)
"_OBJC_CLASS_$_TTView", referenced from:
objc-class-ref-to-TTView in libCompton.a(ComptonQuizStartController.o)
"_OBJC_CLASS_$_TTShapeStyle", referenced from:
objc-class-ref-to-TTShapeStyle in libCompton.a(ComptonQuizStartController.o)
"_OBJC_CLASS_$_TTInnerShadowStyle", referenced from:
objc-class-ref-to-TTInnerShadowStyle in libCompton.a(ComptonQuizStartController.o)
"_OBJC_METACLASS_$_TTViewController", referenced from:
_OBJC_METACLASS_$_ComptonFeedbackController in libCompton.a(ComptonFeedbackController.o)
_OBJC_METACLASS_$_ComptonCatalogController in libCompton.a(ComptonCatalogController.o)
_OBJC_METACLASS_$_ComptonQuizStartController in libCompton.a(ComptonQuizStartController.o)
_OBJC_METACLASS_$_PILAppAdViewController in libCompton.a(PILAppAdViewController.o)
_OBJC_METACLASS_$_ComptonQuizController in libCompton.a(ComptonQuizController.o)
"_OBJC_CLASS_$_TTURLCache", referenced from:
objc-class-ref-to-TTURLCache in libCompton.a(ComptonFeedbackController.o)
"_OBJC_CLASS_$_TTSolidBorderStyle", referenced from:
objc-class-ref-to-TTSolidBorderStyle in libCompton.a(ComptonQuizStartController.o)
"_OBJC_CLASS_$_TTViewController", referenced from:
_OBJC_CLASS_$_ComptonFeedbackController in libCompton.a(ComptonFeedbackController.o)
_OBJC_CLASS_$_ComptonCatalogController in libCompton.a(ComptonCatalogController.o)
_OBJC_CLASS_$_ComptonQuizStartController in libCompton.a(ComptonQuizStartController.o)
_OBJC_CLASS_$_PILAppAdViewController in libCompton.a(PILAppAdViewController.o)
_OBJC_CLASS_$_ComptonQuizController in libCompton.a(ComptonQuizController.o)
"_OBJC_CLASS_$_TTNavigator", referenced from:
objc-class-ref-to-TTNavigator in AppDelegate.o
"_OBJC_CLASS_$_TTPostController", referenced from:
objc-class-ref-to-TTPostController in libCompton.a(ComptonFeedbackController.o)
"_OBJC_CLASS_$_TTRoundedRightArrowShape", referenced from:
objc-class-ref-to-TTRoundedRightArrowShape in libCompton.a(ComptonStyleSheet.o)
"_OBJC_CLASS_$_TTButton", referenced from:
objc-class-ref-to-TTButton in libCompton.a(ComptonFeedbackController.o)
"_OBJC_CLASS_$_TTSolidFillStyle", referenced from:
objc-class-ref-to-TTSolidFillStyle in libCompton.a(ComptonQuizStartController.o)
"_OBJC_CLASS_$_TTWebController", referenced from:
objc-class-ref-to-TTWebController in AppDelegate.o
"_TTScreenBounds", referenced from:
-[ComptonCatalogController viewDidLoad] in libCompton.a(ComptonCatalogController.o)
-[PILAppAdViewController viewDidLoad] in libCompton.a(PILAppAdViewController.o)
"_OBJC_CLASS_$_TTDefaultStyleSheet", referenced from:
_OBJC_CLASS_$_ComptonStyleSheet in libCompton.a(ComptonStyleSheet.o)
ld: symbol(s) not found
collect2: ld returned 1 exit status
Может кто-нибудь помочь мне выяснить, что может быть не так?
Обновление: Я устранил ошибку связывания дублированных символов, используя описанный здесь процесс fork 3 и 1022 * и удалив флаг компоновщика -all_load на three20 и Compton.Остаётся действительно сумасшедшая проблема, на которой я застрял: я могу нормально скомпилировать и запустить приложение в симуляторе, но при компиляции для устройства я получаю вышеуказанные ошибки компоновки.
Обновление 2: Я решил проблему, добавил ответ и принял его.Проблема действительно заключалась в настройке конфигурации сборки - если вы используете 4.0 SDK, вам нужно установить для «Архитектуры» значение «Оптимизировано (armv7)».