2011-10-24 22 views
9

Tengo algunas bibliotecas estáticas que quiero usar en mi aplicación de iPhone. Cuando trato de ejecutar el simulador obtengo errores de enlace. Soy nuevo en el desarrollo de iOS, y me encontré con este problema al vincularme con las bibliotecas que construí anteriormente;iOS: el archivo se creó para el archivo, que no es la arquitectura que se está vinculando (i386)

file was built for archive which is not the architecture being linked (i386) 

Lo que significa que todas las funciones de referencias de esas bibliotecas me da esto:

undefined symbols for architectyre i386 

No estoy seguro de lo que debe configurar para que este derecho. Las bibliotecas estáticas están compiladas para armv7, plataformas supporteed armv6 armv7.

+6

Parece que las bibliotecas no son compatibles con el simulador, no se han diseñado para i386. Pruebe en un dispositivo o si el código de las bibliotecas está disponible para usted, recupérelo, incluida la arquitectura i386 –

+0

Sí, recibí el código, ¿cómo especifico que también se compile para i386? Ahora mismo; "Arquitecturas: Estándar (armv7)", "Arquitecturas válidas: armv6 armv7", "Construir arquitectura activa solamente: no" – KaiserJohaan

+0

No estoy seguro ahora ... ¿Agregar i386 a arquitecturas válidas? –

Respuesta

12

Ordene un error muy similar con una biblioteca estática que estaba construyendo para iPad. Creo que mi solución fue agregar "i386" a la configuración de Arquitecturas para el proyecto (haga clic en Proyecto -> Configuraciones de compilación -> Arquitecturas --o sea Valid Architectures? - y haga clic en el ícono "+", escriba "i386 "en la línea resaltada). Cualquiera que te acerque.

Oh, una advertencia más, he leído que deberíamos establecer "Construir arquitectura activa solamente" en "No" también. Ya estaba listo para mí, pero eso es algo que quizás quieras comprobar.

+0

Esto funcionó para mí – Krishnan

2

Después de luchar con este mismo problema y seguir todas las respuestas aceptadas de actualizar la configuración de compilación, borrar la ruta de búsqueda del enlazador, etc. Finalmente descubrí una respuesta que funcionó para mí.

Antes de construir, asegúrese de seleccionar el tipo correcto (simulador de iPhone) en lugar del dispositivo iOS. Entonces reconstruye. De lo contrario, intenta usar una biblioteca creada para un dispositivo iOS (procesador de brazo) en un simulador (i386). Debería haber sido obvio, pero no fue así.

Antes:

iOS Device Settings

Después:

iPhone 5.1 Simulator Settings

Ahora, mira en el grupo de productos en el navegador> haga clic derecho en su biblioteca estática (.a archivo)> Mostrar en Finder, verá que está en una carpeta Debug-iphonesimulator en lugar de Debug-iphoneos. No presté ninguna atención al nombre de la carpeta originalmente, o podría haber pensado en esto antes.

Espero que esto ayude.

Cuestiones relacionadas