Как сделать построить универсальную статическую библиотеку для ios

Я пытаюсь создать статическую библиотеку, которую можно использовать как с ios3.x, так и с ios4.x. Я могу создать статическую библиотеку с ios3. 0, который работает с другим проектом в ios3.0, но не компилируется в ios4. То же самое и с ios4 на ios3.

Вот как воссоздать:

  1. Откройте XCode 3.2.4 и запустите новый проект, который представляет собой статическую библиотеку Cocoa Touch под названием Library4
  2. Щелкните папку классов и создайте новый UIViewController с именем «TestViewController»
  3. Справа щелкните папку Frameworks, добавьте существующую структуру, выберите UIKit
  4. . На левой панели разверните целевые объекты, щелкните правой кнопкой мыши цель моей библиотеки и щелкните получить информацию. Измените все конфигурации, Измените базовый SDK на iphone simulator 4.0, измените цель развертывания ios на ios3.0
  5. Щелкните по папке Link Library with Binaries. На правой панели измените роли обоих на «Слабый»
  6. Построение библиотеки
  7. Откройте Xcode 3.2. 2 и запустите новое приложение на основе View под названием Library4Test
  8. . Скопируйте TestViewController.h в папку классов
  9. . Скопируйте файл libLibrary4.a в папку frameworks. Он автоматически добавляется в фазу компоновщика целевого объекта
  10. . Щелкните правой кнопкой мыши объект Library4Test Target и щелкните получить информацию. В других флагах компоновщика добавьте «-ObjC» и «-all_load»
  11. В заголовке делегата приложения добавьте Import «TestViewController.h»
  12. В методе didFinishLaunchingWithOptions приложения заголовка делегата приложения add

    TestViewController * test = [ TestViewController alloc] init;

  13. Компиляция с симулятором ios3.0

При компиляции я получаю:

Ld build/Debug-iphonesimulator/library4Test.app/library4Test normal i386
cd /Users/test/Documents/Testing/library4Test
setenv MACOSX_DEPLOYMENT_TARGET 10.5
setenv PATH "/Developer/GrandpaIPhone/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Developer/GrandpaIPhone/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"
/Developer/GrandpaIPhone/Platforms/iPhoneSimulator.platform/Developer/usr/bin/gcc-4.2 -arch i386 -isysroot /Developer/GrandpaIPhone/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.1.3.sdk -L/Users/test/Documents/Testing/library4Test/build/Debug-iphonesimulator -L/Users/test/Documents/Testing/library4Test -F/Users/test/Documents/Testing/library4Test/build/Debug-iphonesimulator -filelist /Users/test/Documents/Testing/library4Test/build/library4Test.build/Debug-iphonesimulator/library4Test.build/Objects-normal/i386/library4Test.LinkFileList -mmacosx-version-min=10.5 -framework Foundation -framework UIKit -framework CoreGraphics -llibrary4_1 -o /Users/test/Documents/Testing/library4Test/build/Debug-iphonesimulator/library4Test.app/library4Test

Undefined symbols:
"_objc_msgSendSuper2", referenced from:
-TestViewController didReceiveMemoryWarning in liblibrary4_1.a(TestViewController.o)
-TestViewController viewDidUnload in liblibrary4_1.a(TestViewController.o)
-TestViewController dealloc in liblibrary4_1.a(TestViewController.o)
"__objc_empty_vtable", referenced from:
_OBJC_METACLASS_$_TestViewController in liblibrary4_1.a(TestViewController.o)
_OBJC_CLASS_$_TestViewController in liblibrary4_1.a(TestViewController.o)
"_OBJC_CLASS_$_UIViewController", referenced from:
_OBJC_CLASS_$_TestViewController in liblibrary4_1.a(TestViewController.o)
"_OBJC_METACLASS_$_UIViewController", referenced from:
_OBJC_METACLASS_$_TestViewController in liblibrary4_1.a(TestViewController.o)
".objc_class_name_TestViewController", referenced from:
literal-pointer@__OBJC@__cls_refs@TestViewController in library4_1os3TestAppDelegate.o
"_OBJC_METACLASS_$_NSObject", referenced from:
_OBJC_METACLASS_$_TestViewController in liblibrary4_1.a(TestViewController.o)
ld: symbol(s) not found
collect2: ld returned 1 exit status
8
задан PaulG 23 October 2010 в 23:35
поделиться