2012-06-07 15 views
9

Bien, esto se ha convertido en un dolor correcto Lo he estado buscando durante 2 días y parece que no puede resolverlo. Aquí está el error que estoy recibiendo.Símbolos no definidos para la arquitectura armv7: "_SCNetworkReachabilityCreateWithAddress"

Undefined symbols for architecture armv7: 
"_SCNetworkReachabilityCreateWithAddress", referenced from: 
    +[Reachability reachabilityWithAddress:] in Reachability.o 
"_SCNetworkReachabilityCreateWithName", referenced from: 
    +[Reachability reachabilityWithHostName:] in Reachability.o 
"_SCNetworkReachabilityUnscheduleFromRunLoop", referenced from: 
    -[Reachability stopNotifier] in Reachability.o 
"_SCNetworkReachabilityScheduleWithRunLoop", referenced from: 
    -[Reachability startNotifier] in Reachability.o 
"_SCNetworkReachabilitySetCallback", referenced from: 
    -[Reachability startNotifier] in Reachability.o 
"_SCNetworkReachabilityGetFlags", referenced from: 
    -[Reachability connectionRequired] in Reachability.o 
    -[Reachability currentReachabilityStatus] in Reachability.o 
ld: symbol(s) not found for architecture armv7 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

He añadido SystemConfiguration.framework y no parece querer hacer nada con ella como este error simplemente no va a desaparecer. He visto bastantes de los mismos problemas, pero muchos de ellos confirman las respuestas. Este tipo acaba de desarrollarse durante el fin de semana cuando nadie lo tocó. Alguien puede ayudar.

EDIT Ha olvidado agregar este bit.

ld: aviso: ignorando /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk/System/Library/Frameworks//SystemConfiguration.framework/ archivo SystemConfiguration, falta requerido ARMv7 arquitectura en el archivo

EDITAR

Gracias derecho a @gaige he encontrado un problema; hay una barra adicional justo antes de SystemConfiguration.framework que no debería estar allí. He eliminado el marco y vuelto a agregar y eso no ha ayudado. ¿Cómo puedo eliminar esta barra extra?

+0

Hay una raya extra extraña en la ruta del marco, que podría estar afectando eso (o no), ¿puede eliminar y volver a agregar el marco? Mi copia de los frameworks definitivamente tiene v6 y v7, así que debería estar bien. – gaige

+0

@gaige He eliminado y vuelto a agregar el marco, y esa barra aún existe, hay alguna forma en que puedo eliminar esa barra, ya que he intentado acceder al archivo a través del terminal ahora y no funciona con él, pero sin él eso. – Popeye

+1

Los sistemas UNIX generalmente no fallan debido a una barra extra. Supongo que es posible. ¿Puedes verificar que el archivo en cuestión realmente tiene ambas arquitecturas? ejecute 'lipo -info/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk/System/Library/Frameworks // SystemConfiguration.framework/SystemConfiguration' – Nate

Respuesta

8

Normalmente, las barras adicionales no arruinarán un proceso de compilación de tipo UNIX.

Pero, debe asegurarse de que la arquitectura armv7 se encuentre dentro del archivo de infraestructura que su compilación está tratando de utilizar. Para ello, utilice el comando lipo -info en la línea de comandos:

lipo -info /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer‌​/SDKs/iPhoneOS5.1.sdk/System/Library/Frameworks//SystemConfiguration.framework/Sy‌​stemConfiguration 

debería ver una salida como esta:

Architectures in the fat file: SystemConfiguration are: armv6 armv7 

Si no, su proyecto es probablemente configurar para enlazar con el versión incorrecta de SystemConfiguration.framework. Hay múltiples versiones de ese marco en su máquina. Entonces, verificaría la ruta del marco (es decir, SystemConfiguration) que tienes en tu proyecto.

Normalmente, sería de esperar que el archivo sea algo como esto (ajustado por la versión del sistema operativo que esté utilizando):

/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk/System/Lib‌​rary/Frameworks/SystemConfiguration.framework 
+0

Muchas gracias que realmente me han ayudado y espero que ayude a otros en el futuro. – Popeye

0

he tenido este problema durante aproximadamente 8 horas con un proyecto de Córdoba y la org.apache.cordova.network-information plugin. Por las respuestas anteriores y varias otras respuestas, me animé a buscar en la sección Project > Target > Build Phases > Link Binary with Libraries de Xcode, que era correcta.

Pero aunque SCNetworkReachabilityCreateWithAddress se define en SystemConfigration.framework, no pude eliminar los errores del enlazador al agregar y eliminar sistemáticamente esta y otras bibliotecas.

Finalmente, creé un nuevo proyecto con el complemento y copié la constelación del marco exactamente como estaba el original. Ahora funciona.

Conclusión:

  • Si es posible, crear un nuevo proyecto con las extensiones necesarias y copiar las constelaciones de ella. Podría ayudar.
  • A veces, una biblioteca está demasiado incluida, así que desmárcala. A veces es al revés.
  • Para profundizar, verifique SystemConfiguration.framework como se describe en las respuestas pendientes arriba. Puede no coincidir con la arquitectura de destino. Además, busca caracteres extraños en la compilación, incluidos los caminos.
Cuestiones relacionadas