Estoy intentando construir una biblioteca estática que pueda usar tanto con ios3.x como con ios4.x. Puedo construir una biblioteca estática con ios3.0 que funcione con otro proyecto en ios3.0 pero no compilará en ios4. Lo mismo es cierto yendo de ios4 a ios3.Cómo construir una biblioteca estática universal de ios
Así es como volver a crear:
- abierto XCode 3.2.4 y empezar un nuevo proyecto que es una biblioteca estática Cocoa Touch llama Library4
- Haga clic en la carpeta de clases y crear un nuevo UIViewController llamado "TestViewController"
- Haga clic derecho en la carpeta de Frameworks, agregue el marco existente, elija UIKit
- En el panel izquierdo, expanda los objetivos, haga clic derecho en el objetivo de mi biblioteca y haga clic en obtener información. Cambie a todas las configuraciones, cambie la base SDK a iPhone Simulator 4.0, cambie el destino de despliegue iOS a ios3.0
- Haga clic en la Biblioteca de enlaces con la carpeta Binarios. En el panel derecho, cambiar los roles de ambos para "débil"
- crear la biblioteca
- Abra Xcode 3.2.2 y comenzar una nueva aplicación basada en la vista llamada Library4Test
- Copia TestViewController.h a las clases carpeta
- Copie el archivo libLibrary4.a a la carpeta de marcos. Se agrega automáticamente a la fase del vinculador del destino
- Haga clic con el botón derecho en el objetivo Library4Test y haga clic en get info. En otras banderas de engarce, añadir "-ObjC" y "-all_load"
- en la cabecera de aplicación delegado añadir importación "TestViewController.h"
en el Método didFinishLaunchingWithOptions de aplicación de la cabecera delegado de la aplicación añadir
TestViewController * Prueba = [TestViewController alloc] init;
Compilar con el simulador de ios3.0
cuando compilo me sale:
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:
[email protected][email protected][email protected] 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
Para las personas que solo buscan construir una lib de IOS estática: http://stackoverflow.com/questions/3520977/build-fat-static-library-device-simulator-using-xcode-and-sdk-4 –