que procesador español dispositivos cortex con arquitectura ios armv7

ios - procesador - dispositivos con arm



Símbolos indefinidos para la arquitectura armv7 (30)

Causas comunes

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

  1. Importa un encabezado y no vincula con la biblioteca correcta . Esto es común, especialmente para los encabezados de bibliotecas como QuartzCore, ya que no está incluido en los proyectos de forma predeterminada. Resolver:

    • Agregue las bibliotecas correctas en la sección Link Binary With Libraries de las Build Phases .

    • Si desea agregar una biblioteca fuera de la ruta de búsqueda predeterminada, puede incluir la ruta en el valor de Library Search Paths la Library Search Paths en la configuración de compilación y agregar
      -l{library_name_without_lib_and_suffix} (por ejemplo, para libz.a use -lz ) en la sección Other Linker Flags de -lz de Build Settings de Build Settings .

  2. Copia archivos en su proyecto pero se olvidó de verificar el destino para agregar los archivos . Resolver:

    • Abra las Build Phases de Build Phases para el destino correcto, expanda Compile Sources y agregue los archivos .m faltan. Si este es tu problema, por favor, vota la respuesta de Cortex a continuación también.

  3. Incluyes una biblioteca estática construida para otra arquitectura como i386, el simulador en tu 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 (por ejemplo, armv7).

    • Opcionalmente, puede crear una biblioteca estática grande que contenga ambas arquitecturas.


Respuesta original:

No has enlazado contra el archivo libz correcto. Si hace clic derecho en el archivo y revela en el buscador su ruta debe estar en algún lugar de una carpeta sdk de iOS. Aquí está el mío por ejemplo

/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk/usr/lib

Recomiendo eliminar la referencia y luego volver a agregarla en la sección Vincular fases binarias con bibliotecas de su objetivo.

Este problema me ha vuelto loco, y no puedo resolver 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 he agregado: libz.1.2.3.dylib y no está ayudando, ¿alguien tiene alguna idea?


Anoche tuve un problema similar 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 las fuentes de compilación y asegurarse de arrastrar la clase a la lista.


En Destino -> Configuraciones de compilación -> Idioma del compilador de Apple LLVM: la configuración de ''C ++ Language Dialect'' y ''C ++ Standard Library'' en el valor predeterminado del compilador ayudó a resolverlo.


En mi caso, he agregado un marco que debe estar utilizando Objective C ++. Encontré este post:

XCode .m vs. .mm

eso explicaba cómo el main.m necesitaba ser renombrado a main.mm para que las clases de Objective-C ++ también pudieran compilarse.

Eso lo arregló para mí.


Finalmente lo resolví, resolví este problema agregando un marco ausente a target-> Build Phases-> Link Binary With Libraries


Le doy más sugerencias que puede consultar cuando otras sugerencias comunes no son de ayuda.

Si se vincula con otro proyecto (libxxx.a), a veces puede encontrar un problema extraño que puede encontrar el símbolo con herramientas como nm, pero simplemente no pueden encontrar los símbolos en ld. Luego, debe verificar si los dos proyectos están construidos en las mismas banderas, algunos de ellos pueden afectar el formato binario.

  1. Verifique el compilador de c ++.
  2. Compruebe la configuración del dialecto c ++.
  3. Compruebe el soporte de tipo de tiempo de ejecución de C ++. (-frtti / -fnortti)
  4. compruebe si hay .a con el mismo nombre que aparece en otra parte, podría estar más allá del archivo deseado en la lista de rutas de enlace. eliminarlos

Me enfrentaba a un problema con las bibliotecas PJSIP,

Intentó lo siguiente en otros indicadores de vinculador en el proyecto y pudo resolver el error: -framework Foundation -framework UIKit

Las banderas del enlazador anterior se utilizan en el Proyecto Siphone sobre github . Esta configuración le ayudará a resolver problemas relacionados con la vinculación de bibliotecas de C ++.


No encontré esta sugerencia aquí, por lo que aquí va: si su proyecto tiene más de un objetivo (es decir, uno para OSX y otro para iOS), debe vincular las bibliotecas relevantes para cada objetivo. Por ejemplo, en mi caso, necesitaba AudioToolbox ... Tuve que agregarlo una vez para OSX y una para iOS (debajo de la carpeta frameworks , debes tener un duplicado de cada biblioteca para cada objetivo ... si solo ves una ... entonces eso es una bandera roja)


Normalmente hay un alias sin el identificador de versión que está vinculado a la versión actual, en este caso, libz.dylib está vinculado a libz.1.2.5.dylib. Utilice el alias base en lugar del versionado.



Para mí, el problema fue que olvidé establecer un valor para mis constantes en .m (implementación)

file const kFooKey = @"Foo";


Probablemente faltan algunas clases de tu objetivo. Esto suele suceder cuando cambia / elimina / agrega nuevos archivos de clases a su proyecto. Para arreglar agregar las clases recién agregadas a algunos objetivos.

Seleccione la clase en el Project Navigator (barra lateral derecha), abra la barra lateral Utilidades (barra lateral derecha), en la pestaña Utilidades seleccione el inspector de archivos (archivo como icono), debajo de la pestaña Membresía de destino, marque sus objetivos. Esto es todo para evitar el truco "Eliminar referencia" y agregarlo nuevamente al marcar "Agregar a objetivos".

Entonces: Seleccione Clase -> Utilidades (inspector de archivos) -> Membresía de destino -> Marque los objetivos que desee.


Recibí el error ''Símbolos no definidos para la arquitectura armv7:'' al intentar compilar un proyecto que tenía la configuración de compilación de destino para ''Biblioteca estándar de C ++'' establecida en ''libc ++'' (necesario porque el proyecto estaba usando algunas funciones de C ++ 11), y el proyecto incluía un subproyecto que tenía la misma configuración establecida en ''libstdc ++'' (o el valor predeterminado del compilador actualmente).

Cambiar la configuración de la ''Biblioteca estándar de C ++'' del subproyecto a libc ++ lo corrigió, pero solo después de configurar el objetivo de implementación del subproyecto a 5.0 o superior (5.0 es necesario para libc ++).


Si está compilando desde Unity3D 5 y también está usando un complemento Prime31 y está recibiendo este error, probablemente se deba a un archivo .dll duplicado. Si revisa sus advertencias en el editor de Unity, una de ellas le dirá esto y advertirá que podría causar errores de compilación. Para ver si este es el caso, escriba P31 en el campo de búsqueda de su proyecto y debería aparecer, tal vez incluso más de uno. Los duplicados tendrán un ''1'' al final del nombre del archivo. Esto probablemente se debe a la actualización del complemento en el editor a través de la tienda o la pestaña de menú Prime31.


Si tiene el -ObjC en Destino> Configuración de compilación> Otros indicadores de vinculador y está teniendo este problema, considere eliminarlo. Si lo agregó intencionalmente porque necesita cargar algún código Obj-C de una biblioteca estática que normalmente no se cargaría, IE, una categoría Obj-C, entonces debería usar -force_load <path> lugar de -ObjC .

<path> debe ser relativa a su directorio de proyectos Xcode. IE, si la estructura de su directorio se ve así:

iOSProject + iOSAPI.framework + iOSAPI + iOSAPI.xcodeproj

Entonces deberías tener esta bandera configurada para Other Linker Flags :

-force_load iOSAPI.framework/iOSAPI

Si desea incluir varias bibliotecas como esa, entonces debe incluir una línea -force_load separada para cada una de ellas.

-force_load iOSAPI.framework/iOSAPI -force_load another.framework/another


Solo agregué el libz.1.2.5.dylib a mi proyecto y funcionó a la perfección.

Pasos -

  1. Ir a construir fases.
  2. Vincular binario con biblioteca: use el botón ''+'' para elegir marcos y bibliotecas para agregar.
  3. Seleccione libz.1.2.5.dylib de la lista.
  4. Construye y corre.

También agregué archivos a través de arrastrar y soltar. Lo que hice, eliminé las referencias de todos los archivos (excluyendo los frameworks ) y luego los volví a agregar correctamente a través de la opción Agregar archivos al proyecto , el problema desapareció.


Tengo este problema cuando ejecuto la aplicación en iphone5s , se resolvió agregando arm64 a Arquitecturas .


Tengo varias @interfaces en el archivo .h y todavía no había incluido todas las directivas correspondientes de @implementation. Asegúrese de que todos estén equilibrados.


Tuve el mismo problema cuando uso la biblioteca admob, la arreglé cambiando "Arquitecturas" a "Arquitecturas estándar armv7, armv7s" sin incluir 64 bits.


Tuve este problema, al instalar shareKit. Funcionó en el simulador, pero no en el dispositivo. Quité -all_load de la bandera del otro enlazador y todo funciona bien tanto en el simulador como en el dispositivo iPhone.


Tuve un problema similar con eso. El nombre de la clase después de _OBJC_CLASS _ $ _ era en realidad mi clase. La razón fue que no marqué "Agregar al objetivo" cuando arrastré los archivos de código fuente a la lista de navegación.

Mi solución fue:

  1. eliminar la clase de la lista de navegación y elegir "eliminar solo la referencia"

  2. arrastre los archivos de código fuente nuevamente y asegúrese de que la casilla de verificación "agregar al destino" esté marcada. La casilla de verificación está justo debajo de "Copiar si es necesario" y "Crear grupo".


Tuve un problema similar y tuve que marcar "Crear 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 objetivo.


Tuve un problema similar y vi errores relacionados con "std ::"

Cambié la configuración de compilación -> Apple LVM 5.0 - Idioma C ++ -> Biblioteca estándar de C ++

de libc ++ (biblioteca estándar de LLVM C ++ con soporte de C ++ 11) a libstdc ++ (biblioteca estándar de GNU C ++)


Una vez tuve este problema. Me di cuenta de que al mover una clase, había sobrescrito el archivo .mm con el archivo .h en la carpeta de destino.

Solucionar ese problema solucionó el error.


Utilizo para enfrentar ese problema cuando el módulo (archivo .m) no está en el destino con el que estoy trabajando.


Vaya a su proyecto, haga clic en Construir fases, Compilar fuentes, Agregar GameCenterManager.m a la lista.


Yo tuve el mismo problema. Intenté todo desde la gran lista de respuestas, pero al final mi problema fue: estoy trabajando con openCV, así que necesito combinar el código C ++ en mi código. Para hacer esto, debes cambiar los archivos que usan objective-c y C ++ a .mm. No cambié un archivo y este archivo no tiene conexión con el código C ++ pero tuve que cambiarlo.


si está lidiando con la actualización de iOS5, encontré que para compilar un proyecto escrito en target 4.3, podría simplemente cambiar el nombre de libz.1.2.3.dynlib en el Project Navigator a libz.1.2.5.dynlib y compilarlo.

Mi carpeta iPhoneOS50SDK / usr / lib no tiene libz.1.2.3.dynlib; no sé si es una versión beta o simplemente una actualización natural.


Así es como tengo este problema:

Agregué un .h, .m y NIB de otro proyecto arrastrándolos a mi navegador de proyectos. Xcode no los agregó a las fases de construcción correctamente.

Verifique mi respuesta porque tuve un problema similar que pude resolver haciendo algunos pasos.