Símbolos indefinidos para la arquitectura armv7.

Resuelto Alex Trott asked hace 54 años • 40 respuestas

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.dyliby no ayuda, ¿alguien tiene alguna idea?

Alex Trott avatar Jan 01 '70 08:01 Alex Trott
Aceptado

Causas comunes

Las causas comunes de los "símbolos no definidos para la arquitectura armv7" son:

  1. 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 Librariessección del archivo Build Phases.

    • Si desea agregar una biblioteca fuera de la ruta de búsqueda predeterminada, puede incluir la ruta en el Library Search Pathsvalor 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 la Other Linker Flagssección de Build Settings.

  2. Copiaste archivos en tu proyecto pero olvidaste verificar el destino al que agregar los archivos . Resolver:

    • Abra el archivo Build Phasespara el destino correcto, expanda Compile Sourcesy agregue los .marchivos que faltan. Si este es su problema, vote también a favor de la respuesta de Cortex a continuación .

  3. 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.

Joe avatar Jun 21 '2011 17:06 Joe

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.

Cortex avatar Apr 16 '2012 07:04 Cortex

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.

Alex Zavatone avatar Dec 19 '2011 23:12 Alex Zavatone