Símbolos indefinidos para la arquitectura armv7.
Este problema me ha estado volviendo loco y no sé cómo solucionarlo...
Undefined symbols for architecture armv7:
"_deflateEnd", referenced from:
-[ASIDataCompressor closeStream] in ASIDataCompressor.o
"_OBJC_CLASS_$_ASIDataDecompressor", referenced from:
objc-class-ref in ASIHTTPRequest.o
"_deflate", referenced from:
-[ASIDataCompressor compressBytes:length:error:shouldFinish:] in ASIDataCompressor.o
"_deflateInit2_", referenced from:
-[ASIDataCompressor setupStream] in ASIDataCompressor.o
ld: symbol(s) not found for architecture armv7
collect2: ld returned 1 exit status
Command /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc-4.2 failed with exit code 1
Creo que tiene que ver con:
ld: symbol(s) not found for architecture armv7
Pero agregué: libz.1.2.3.dylib
y no ayuda, ¿alguien tiene alguna idea?
Causas comunes
Las causas comunes de los "símbolos no definidos para la arquitectura armv7" son:
Importa un encabezado y no lo vincula con la biblioteca correcta . Esto es común, especialmente para encabezados de bibliotecas como QuartzCore, ya que no está incluido en los proyectos de forma predeterminada. Resolver:
Agregue las bibliotecas correctas en la
Link Binary With Libraries
sección del archivoBuild Phases
.Si desea agregar una biblioteca fuera de la ruta de búsqueda predeterminada, puede incluir la ruta en el
Library Search Paths
valor en la Configuración de compilación y agregarla-l{library_name_without_lib_and_suffix}
(por ejemplo, para uso de libz.a-lz
) a laOther Linker Flags
sección deBuild Settings
.
Copiaste archivos en tu proyecto pero olvidaste verificar el destino al que agregar los archivos . Resolver:
- Abra el archivo
Build Phases
para el destino correcto, expandaCompile Sources
y agregue los.m
archivos que faltan. Si este es su problema, vote también a favor de la respuesta de Cortex a continuación .
- Abra el archivo
Incluye una biblioteca estática creada para otra arquitectura como i386, el simulador en su máquina host. Resolver:
Si tiene varios archivos de biblioteca de su proveedor de bibliotecas para incluir en el proyecto, debe incluir uno para el simulador (i386) y otro para el dispositivo (armv7, por ejemplo).
Opcionalmente, puede crear una biblioteca estática completa que contenga ambas arquitecturas.
Respuesta original:
No ha vinculado el archivo libz correcto. Si hace clic derecho en el archivo y lo revela en el buscador, su ruta debería estar en algún lugar de una carpeta SDK de iOS. aqui esta el mio por ejemplo
/Desarrollador/Plataformas/iPhoneOS.platform/Desarrollador/SDKs/iPhoneOS4.3.sdk/usr/lib
Recomiendo eliminar la referencia y luego volver a agregarla en la sección Vincular binario con bibliotecas Fases de compilación de su objetivo.
Tuve un problema similar anoche y el problema estaba relacionado con el hecho de que había arrastrado una clase desde el Finder a mi proyecto en Xcode.
La solución fue ir a la pestaña Fases de compilación y luego a Fuentes de compilación y asegurarse de arrastrar la clase a la lista.
Tuve un problema similar y tuve que marcar "Construir solo arquitectura activa" en cada una de las configuraciones del proyecto (depuración, lanzamiento e implementación) y en la configuración de compilación del destino.