ios - Error: "El archivo se creó para el archivo que no es la arquitectura que se está vinculando(armv7s)"
xcode static-libraries (7)
Construí mi propia biblioteca de C ++ estática, que está construida con la configuración:
- Arquitecturas: armv7, armv7s
- Construir arquitecturas activas solamente: no
- Plataformas de soporte: iOS
- Arquitecturas válidas: armv7, armv7s
El proyecto de la biblioteca se compila bien y obtuve el archivo .a (he limpiado la carpeta de compilación y he creado el proyecto nuevamente para asegurarme de que mi configuración sea efectiva).
He agregado la biblioteca (archivo .a) a mi proyecto de iOS, pero el proyecto no se compilará aunque haya establecido exactamente la misma configuración en el proyecto de iOS:
- Arquitecturas: armv7s, armv7
- Construir arquitecturas activas solamente: sí
- Plataformas de soporte: iOS
- Arquitecturas válidas: armv7, armv7s
Sigo recibiendo este error:
ld: advertencia: ignorando el archivo /Users/hidden/Library/Developer/Xcode/DerivedData/HelloWorldCppLib-fomvvtklwijvqicyhahxleiscein/Build/Products/Debug-iphoneos/libHelloWorldCppLib.a, el archivo se creó para el archivo que no es la arquitectura que se está vinculando (armv7s) : /Users/hidden/Library/Developer/Xcode/DerivedData/HelloWorldCppLib-fomvvtklwijvqicyhahxleiscein/Build/Products/Debug-iphoneos/libHelloWorldCppLib.a
¿Qué me estoy perdiendo? Me dice que el archivo .a no se creó para armv7s, pero esa es exactamente la configuración con la que construí la biblioteca.
Cuando está compilando una biblioteca, debe compilarla para el simulador y el dispositivo y luego combinar las dos salidas (archivos .a) en una biblioteca y luego vincularla a su proyecto de iOS.
Desafortunadamente, todos estos consejos no funcionan para mí: Xcode 7.3.1 (7D1014), iPhone 5. Pero tan pronto como eliminé todos los archivos temporales de Xcode (+ reinicié Xcode) y volví a construir, comenzó a funcionar.
Me encontré con un problema similar yo mismo. La solución de @graver
es definitivamente válida.
El problema era que la biblioteca se estaba construyendo para armv7
lugar de armv7s
. Puede verificar esto usted mismo usando lipo <path/to/lib.a> -info
.
Establecer la opción Build Active Architectures Only
en No
soluciona el problema.
Espero que esto ayude.
Me sucedió con Facebook SDK (v 4.24.0) utilizado a través de CocoaPods.
Limpiar o configurar Build Active Architectures Only
para NO
en Pods no resolvió el problema.
La solución fue vaciar el directorio de compilación (ver Configuraciones de compilación / Ubicaciones de compilación / CONFIGURATION_BUILD_DIR) O $(CONFIGURATION_BUILD_DIR)
Variable Xcode.
Obtuve exactamente el mismo error cuando con los cocapodos: Para mí, la solución fue tener dos diferentes Build Active Architecture para el objetivo y las vainas.
Objetivo de la aplicación:
Build Active Architectures Only **Yes**
pods Target
Build Active Architectures Only **No**
Uso XCode 5.1.1 y me encontré con el problema descrito. Una forma más conveniente de resolver este problema parece ser simplemente crear un Archivo (a través de menú Crear / Archivar) y distribuirlo. El archivo lib distribuido contendrá todas las arquitecturas definidas.
una nota adicional es:
Build Active Architectures Only set to no
es para el proyecto lib.