Recientemente me actualicé a iPhone SDK 4.0 y ya no puedo compilar mi proyecto para el simulador de iPhone. El problema es que las clases de una de mis propias bibliotecas ya no se pueden encontrar por LD:Error de vinculador (solo simulador) con biblioteca propia después de la actualización a iPhone SDK 4.0
"_OBJC_CLASS_$_Book", referenced from:
objc-class-ref-to-Book in Category.o
(maybe you meant: ...)
ld: symbol(s) not found
collect2: ld returned 1 exit status
yo ya había leído algunas otras críticas sobre problemas similares, como por ejemplo, here. "Desafortunadamente", mi problema no tiene nada que ver con un marco de SDK, sino con mi propia lib, por lo que las soluciones mencionadas aquí no son aplicables aquí.
La biblioteca está incluida en "Enlace binario con bibliotecas" de mi destino, las rutas de búsqueda de biblioteca son correctas (comprobó esto con XCode y con un editor de texto sin formato directamente en el archivo de proyecto) y se agregaron correctamente al comando gcc.
Estoy usando iPhone Simulator 3.2 como Base SDK, pero el mismo problema ocurre con SDK 4.0. Nuevamente, esto funciona con el objetivo de mi dispositivo pero no con el objetivo de mi simulador. Sin embargo, funcionó con ambos antes de que actualizara desde el iPhone SDK 3.2 a 4.0. También pude reproducir este error creando un nuevo proyecto con solo un archivo y la lib enlazada. Sin embargo, la lib debería estar bien ya que funcionó con el simulador 3.2 antes de actualizar XCode y mi SDK.
Más Datos: Mac OS X 10.6.3, XCode 3.2.3 de 64 bits, el iPhone OS 3.2, GCC 4.2
Cualquier ayuda sería muy apreciada.
EDIT:
Después de volver a instalar el SDK 3.2, todo funcionó como se esperaba de nuevo. Debe tenerse en cuenta que los SDK en la carpeta /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs se sobrescriben con cada instalación. Luego intenté volver a instalar SDK 4.0 y se produjo el mismo error que el anterior. No cambié nada en mi proyecto y siempre utilicé 3.2 como Base SDK.
El problema, por tanto, posiblemente se pueden reducir a las siguientes opciones:
- Apple cambió algo. en el Simulator SDK 3.2 que causa el problema
- un cambio en XCode 3.2.3 causa el problema
- banderas del compilador erróneas/faltantes al compilar mi propia biblioteca (esas banderas, sin embargo, solo causarían problemas con un SDK modificado o el IDE cambiada)
también hizo un diff carpeta en /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.2.sdk de la antigua y de la nueva versión de esta carpeta. Resultó que en realidad hay cambios menores dentro del "mismo" SDK. Aún así creo que es un problema de indicador IDE/compilador.
¿Alguien alguna idea? No me quiero quedar con 3.2 para siempre ...
Tuve el mismo problema. Misteriosamente solo ocurrió para el "Release" pero no para la compilación "Debug", aunque no cambié nada después de actualizar al SDK 4.0. Sin embargo, no he examinado esto aún más. – Stiefel