Al intentar compilar con Xcode, aparece el siguiente error:
**Ld /Users/doronkatz/Library/Developer/Xcode/DerivedData/iKosher-bphnihrngmqtkqfgievrrumzmyce/Build/Products/Debug-iphonesimulator/iKosher.app/iKosher normal i386
cd /Users/doronkatz/Sites/xCode/iKosher
setenv MACOSX_DEPLOYMENT_TARGET 10.6
setenv PATH "/Xcode4/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Xcode4/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"
/Xcode4/Platforms/iPhoneSimulator.platform/Developer/usr/bin/gcc-4.2 -arch i386 -isysroot /Xcode4/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.2.sdk -L/Users/doronkatz/Library/Developer/Xcode/DerivedData/iKosher-bphnihrngmqtkqfgievrrumzmyce/Build/Products/Debug-iphonesimulator -L/Users/doronkatz/Sites/xCode/iKosher -F/Users/doronkatz/Library/Developer/Xcode/DerivedData/iKosher-bphnihrngmqtkqfgievrrumzmyce/Build/Products/Debug-iphonesimulator -filelist /Users/doronkatz/Library/Developer/Xcode/DerivedData/iKosher-bphnihrngmqtkqfgievrrumzmyce/Build/Intermediates/iKosher.build/Debug-iphonesimulator/iKosher.build/Objects-normal/i386/iKosher.LinkFileList -mmacosx-version-min=10.6 -all_load -ObjC -Xlinker -objc_abi_version -Xlinker 2 -lz -framework Security -framework CFNetwork -framework CoreData -framework Foundation -framework UIKit -framework CoreGraphics -framework QuartzCore -o /Users/doronkatz/Library/Developer/Xcode/DerivedData/iKosher-bphnihrngmqtkqfgievrrumzmyce/Build/Products/Debug-iphonesimulator/iKosher.app/iKosher
Undefined symbols for architecture i386:
"_UTTypeCreatePreferredIdentifierForTag", referenced from:
+[ASIHTTPRequest mimeTypeForFileAtPath:] in ASIHTTPRequest.o
"_UTTypeCopyPreferredTagWithClass", referenced from:
+[ASIHTTPRequest mimeTypeForFileAtPath:] in ASIHTTPRequest.o
"_kUTTagClassMIMEType", referenced from:
+[ASIHTTPRequest mimeTypeForFileAtPath:] in ASIHTTPRequest.o
"_kUTTagClassFilenameExtension", referenced from:
+[ASIHTTPRequest mimeTypeForFileAtPath:] in ASIHTTPRequest.o
"_SCNetworkReachabilitySetCallback", referenced from:
-[Reachability startNotifier] in Reachability.o
"_SCNetworkReachabilityScheduleWithRunLoop", referenced from:
-[Reachability startNotifier] in Reachability.o
"_SCNetworkReachabilityUnscheduleFromRunLoop", referenced from:
-[Reachability stopNotifier] in Reachability.o
"_SCNetworkReachabilityCreateWithName", referenced from:
+[Reachability reachabilityWithHostName:] in Reachability.o
"_SCNetworkReachabilityCreateWithAddress", referenced from:
+[Reachability reachabilityWithAddress:] in Reachability.o
"_SCNetworkReachabilityGetFlags", referenced from:
-[Reachability currentReachabilityStatus] in Reachability.o
-[Reachability isReachable] in Reachability.o
-[Reachability isConnectionRequired] in Reachability.o
-[Reachability isConnectionOnDemand] in Reachability.o
-[Reachability isInterventionRequired] in Reachability.o
-[Reachability isReachableViaWWAN] in Reachability.o
-[Reachability isReachableViaWiFi] in Reachability.o
...
ld: symbol(s) not found for architecture i386
collect2: ld returned 1 exit status**
No estoy seguro de lo que significa.
fuente
Lo resolví usando el siguiente método (para XCode 4):
1) Seleccione el proyecto en la ventana de navegación del proyecto que mostrará el resumen del proyecto a la derecha
2) Seleccione las fases de construcción de la cuarta pestaña
3) Seleccione la opción Vincular binario con biblioteca
4) Agregue el marco para el que está obteniendo
5) Mueva el marco de la carpeta principal a la carpeta de marcos
6) Vuelva a construirlo y los errores desaparecerán.
fuente
El problema es que la membresía de destino para el archivo agregado falta en el destino de la aplicación. Por lo tanto, seleccione el archivo y agregue la marca de verificación a la casilla de membresía de destino
Por ejemplo, si el error que se muestra en la definición de un método en común.
fuente
Pensé en agregar mi solución para esto, después de pasar unas horas con el mismo error :(
Los chicos de arriba tenían razón en que lo primero que debe verificar es si se olvidó de agregar algún marco, vea los pasos proporcionados por Pruthvid arriba.
Resultó que mi problema era que faltaba una clase de compilación después de que la eliminé y luego la volví a agregar.
Verifique sus "Fuentes de compilación" como se muestra para las clases de error reportadas. Agregue las clases faltantes que creó.
fuente
Asegúrese de que el marco que falta se enumera realmente en "Destino / Fases de construcción / Vincular binarios con bibliotecas" si no lo agrega. Como se mencionó anteriormente, generalmente indica un marco faltante.
En mi proyecto había dos marcos idénticos en la lista, cuando eliminé uno de ellos tuve este error, porque también lo eliminó de la lista "Vincular binarios con bibliotecas". Agregué de nuevo y el problema desapareció (y todavía tengo dos marcos enumerados)
fuente
Arreglé un error similar en mi proyecto cambiando la Configuración de compilación> Arquitecturas para TODOS mis objetivos.
El problema: cuando actualicé de Xcode 4.4 a Xcode 4.5, mi proyecto aún se compilaba bien en el simulador pero no en los dispositivos. En los dispositivos, arrojaba el error "símbolo (s) no encontrado para la arquitectura armv7s", junto con el engañoso "Error del vinculador de Apple Mach-O" y "clang: error: el comando del vinculador falló con el código de salida 1 (use -v para ver la invocación ). "
La causa (en mi caso): Mi proyecto tenía varios objetivos, y aunque la Configuración de compilación> Arquitecturas para el objetivo principal se estableció para incluir la arquitectura armv7s, el objetivo principal dependía de otro objetivo (listado en Fases de compilación> Dependencias), y No había pensado en restablecer la Configuración de compilación> Arquitecturas para ese otro objetivo, y tuve que cambiar eso para incluir armv7s. Supongo que el simulador y el dispositivo se ejecutan en arquitecturas diferentes, y es por eso que el simulador estuvo bien mientras que el dispositivo no.
fuente
¿Su proyecto depende de otro proyecto y es un objetivo en ese proyecto configurado para ser una dependencia directa de su objetivo principal? Si este es el caso y la dependencia no está configurada, es posible que el destino dependiente no se esté construyendo para todas las configuraciones (es decir, el simulador)
Solo una suposición descabellada.
fuente
Otra situación que puede causar este problema es si su código llama a C ++, o es llamado por código C ++. Tuve un problema con la función de utilidad de mi propio archivo .c que se mostraba como "símbolo no encontrado" cuando se llamaba desde Obj-C. La solución fue cambiar el tipo de archivo: en Xcode 4, use el panel de información extendido para establecer el tipo de archivo en "Objective-C ++ Source"; en Xcode 3, use "Obtener información" para cambiar el tipo de archivo a "source.cpp.objcpp".
fuente
En mi caso, ninguna de las soluciones publicadas funcionó. Tuve que eliminar el proyecto y realizar una nueva compra desde el servidor SVN . Por suerte, el proyecto estaba alojado en un sistema de control de versiones. No sé qué haría de otra manera.
fuente
En un proyecto de C ++ que usa una clase con plantilla definida , mientras recibía el mismo error, seleccioné el archivo .cpp con la clase con plantilla definida en el Navegador de proyectos, luego Eliminar> Eliminar referencia. Además, el archivo .h asociado, aunque todavía se hace referencia en el proyecto, debe tener una declaración #include al .cpp de la siguiente manera:
Si quieres ver, hay un ejemplo de proyecto simple en github :
Esto es un pequeño truco indirecto y no recuerdo la fuente original de esta solución.
fuente
Si este error aparece de repente, significa que al proyecto le faltan algunos marcos. Las bibliotecas y los proyectos dependientes pueden requerir marcos, por lo que si agregó uno recientemente, eso puede causar este error.
Para agregar marcos, haga clic con el botón derecho en el nombre del proyecto en la vista del proyecto, seleccione Agregar y luego seleccione Marcos existentes de la lista. Luego busca el marco con los símbolos que te faltan.
La otra cosa es que si agregó alguna clase en los recursos compilados y eliminó esas clases del proyecto, aparece el error. Lo mejor que puede hacer es eliminar las clases de los recursos de compilación (Configuración de compilación -> fuentes de compilación) que se eliminaron del proyecto.
En mi caso, agregué las clases admob en el proyecto y compilé el proyecto. En un caso posterior, no quiero incluir admobs en mi proyecto, así que eliminé las referencias de las clases de admob de mi proyecto. Cuando se produjo este error, eliminé la clase .m de mi admob de los recursos de compilación y resolví este problema.
fuente
Esto me sucedió al intentar copiar la biblioteca de demostración de PSPDFKIT en mi proyecto. Seguí todas las instrucciones en el sitio + todas las sugerencias en esta página ... por alguna razón seguía dando el error anterior, el problema era que si capturaba el mensaje en el método de error ... solo aparecía en el binario ( obviamente no tengo acceso al código fuente porque tengo que pagar por él).
Sin embargo, noté esto en la página de instrucciones:
Así que fui a las entrañas de ese archivo de configuración y encontré esto:
Luego fui al proyecto de muestra proporcionado por el autor de dicha biblioteca ... y noté que los indicadores anteriores se copiaron literalmente a los otros indicadores del vinculador en mi configuración de compilación ... sin embargo, en mi proyecto ... ¡no lo estaban! Simplemente los copié y pegué en la configuración de compilación de mi proyecto, otras banderas del enlazador y ¡todo funcionó!
punto importante: si confía en algún archivo .xcconfig en su configuración, verifique dos veces con una fuente de código de muestra o algo y asegúrese de que realmente se haya aplicado ... no se aplicó correctamente en mi caso
fuente
Otra razón por la que esto podría estar sucediendo es cuando ACTUALIZA un SDK.
Si simplemente elimina el grupo y luego arrastra y suelta la nueva carpeta para proyectar, la "Ruta de búsqueda de biblioteca" tendría ambos SDK. Para resolverlo, simplemente elimine la ruta del SDK anterior.
fuente
Había usado un CLGeocoder sin agregar un Core.Location Framework. Básicamente, este error puede significar varias cosas. Espero que esto ayude a alguien más.
fuente
Este me ha dejado perplejo antes solo para darme cuenta de que agregué una @interface de solo datos y olvidé agregar el bloque de @implementation vacío.
fuente
Encontré este problema en Xcode 11, la solución fue cambiar el objetivo de implementación mínimo de 10.0 a 11.0, espero que esto ayude a alguien :)
fuente