Símbolos indefinidos para arquitectura i386: CLASE OBJC SK SKPSMTPMessage", referenciada desde: error


He importado framework para enviar correo electrónico desde la aplicación en segundo plano, es decir, SKPSMTPMessage Framework. ¿Puede alguien sugerir por qué se muestra el error a continuación

Undefined symbols for architecture i386:

"_OBJC_CLASS_$_SKPSMTPMessage", referenced from:
  objc-class-ref in ConfirmController.o

"_kSKPSMTPPartContentTransferEncodingKey", referenced from:
  -[ConfirmController sendEmail] in ConfirmController.o

"_kSKPSMTPPartMessageKey", referenced from:
  -[ConfirmController sendEmail] in ConfirmController.o

"_kSKPSMTPPartContentTypeKey", referenced from:
  -[ConfirmController sendEmail] in ConfirmController.o

ld: symbol(s) not found for architecture i386
collect2: ld returned 1 exit status

Fuente de la que se toma el framework: -

Bloquear los campos en MFMailComposeViewController

Actualización :

Respuesta:Simplemente arrastre y suelte la carpeta sobre el proyecto y haga clic en copiar. Eso es seleccionar la casilla de verificación proyecto y la casilla de verificación destino también.

Author: Community, 2011-08-08

30 answers

Puede obtener este tipo de error si su clase' .el archivo m no aparece en el paso "Compilar fuentes" de la pestaña "Fases de compilación" de su destino. Normalmente Xcode hace esto por usted, pero a veces pierde la trama y necesita agregar el .m archivo manualmente.

Para hacer esto:

TargetSettings -> Fases de compilación -> Compilar fuentes -> añadir su.m class - >Construir y ejecutar

 566
Author: Allen Pike,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-08-25 20:12:15

Para mí el problema resultó ser marcos faltantes. Una vez que agregué em, funcionó.

 37
Author: verma,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-09-20 12:44:26

Compruebe las Arquitecturas válidas y Cree solo propiedades de Arquitectura Activa.

introduzca la descripción de la imagen aquí

 28
Author: Akshay,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-03-04 15:01:13

Si está utilizando cocoapods, asegúrese de que la configuración de compilación de su destino contenga {(heredado) {[2] } en la sección otras banderas de enlace

introduzca la descripción de la imagen aquí

 17
Author: Tim,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-10-19 08:57:04

¿Está compilado su framework para armv (x)? Me parece que está compilado para i386, cuyo código no se ejecutará en un dispositivo iOS. O bien está compilado para armv (x) y estás tratando de ejecutarlo en el simulador, que es código i386. Asegúrate, usando la configuración de compilación Akshay mostrada arriba, de que tu framework está compilado correctamente para el chip en el que vas a ejecutarlo.

 10
Author: Owen Hartnett,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-08-08 15:52:23

Si importa algún otro proyecto en xcode y si el proyecto actual e importado tienen los mismos archivos en el origen del compilador, simplemente elimine el mismo archivo en el proyecto actual en la configuración de "Fase de compilación". Funcionó para mí.

 7
Author: star18bit,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-08-04 00:46:07

Sí, esto está relacionado con lo que dijo Allen... busque TargetMembership en la sección Utilidades del archivo fuente. hay una casilla de verificación que asocia ese archivo a un proyecto. Comprobar esto resolvió este problema para mí también.

 4
Author: yeahdixon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-03-20 20:23:57

También podría ser que te falta enlazar contra una Biblioteca Binaria, comprobar Fases de compilación en tus Targes añadir bibliotecas necesarias y luego Producto > Limpiar Producto > Construir

¡Eso también debe funcionar!

 4
Author: Gabriel Ramirez,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-11-09 23:37:16

Tuve este problema cuando abrí el mismo proyecto dos veces, solo un proyecto era el original y el otro fue clonado desde una url de git.

'Product' > 'Clean' resolvió el problema.

 4
Author: kraftydevil,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-01-03 20:19:25

También me encontré con este problema y lo arreglé comprobando si tanto compile source como link binary with library contenían todo el archivo/library/framework que necesitaba.

introduzca la descripción de la imagen aquí

 4
Author: yujohnnyzhou,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-02-08 00:03:33

Cuando me encontré con el mismo problema que este:

Símbolos indefinidos para arquitectura i386:

_OBJC_CLASS_ _ _SKPSMTPMessage, referenciado desde: objc-class-ref en ConfirmController.o

Resultó que me olvidé de agregar framework. Era QuartzCore.marco para ser exactos.

 4
Author: Mitch Viray,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-04-11 04:57:04

Prueba esta última:

Así que probé todas las sugerencias en esta página.. ninguno funcionó.. La forma en que comenzó mi problema fue siguiendo los pasos en este tutorial que enseña cómo vincular bibliotecas estáticas. Con mi proyecto de ejemplo, las instrucciones funcionaron bien.. pero luego en mi proyecto real empecé a obtener el error anterior.

Así que lo que hice fue ir a través de cada paso del dicho tutorial y construido después de cada paso.. la línea ofensiva resultó ser esta una: añadir-all_load a la configuración de compilación - > otras banderas de enlace

Resulta que este indicador fue recomendado érase una vez para vincular categorías a bibliotecas estáticas.. pero entonces resultó que esta bandera ya no era necesaria Xcode 4.2+.. (lo mismo ocurre con la bandera-force_load.. que también fue recomendado en otros mensajes )..

 4
Author: abbood,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:10:26

Cuando encontré el mismo problema, olvidé agregar "versión compilada de la biblioteca(con extensión .un)". Normalmente agregamos la biblioteca del proyecto importado en la Dependencia de Destino en las Fases de compilación, pero nos olvidamos de agregar "biblioteca compilada" en el Enlace Binario con Bibliotecas en las Fases de compilación.

 3
Author: Balamurugan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-03-27 12:25:45

Agregando lo que funcionó para mí en caso de que otros tengan el mismo problema y terminen aquí. Tenía un proyecto más antiguo que tenía la configuración CLANG_ENABLE_MODULES establecida en No. Después de horas de frustración, me comparé con un proyecto en funcionamiento y descubrí que tenía Activar módulos configurados en no en mi configuración de compilación de LLVM. Establecer esto en Sí resolvió mi problema y la aplicación se construye bien.

Configuración del proyecto -> Configuración de compilación -> buscar 'Módulos' y Actualizar Habilitar Módulos (C y Objective-C) a SÍ.

 3
Author: jlichti,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-09-09 19:31:50

No agregué el "-all_load-lstdc++" a Otras Banderas Enlazadoras en la configuración de compilación y pude iniciar la sim sin error, pero no obtuve la salida de registro de MonkeyTalk cuando se lanzó y el script anterior que escribí que solía conectarse ahora mostró el botón de reproducción como desactivado. La salida del IDE MT se mostró como "Conexión establecida en el simulador de iOS", pero no fue capaz de seleccionar el botón ejecutar/reproducir.

El proyecto original tenía "ObjC-all_load" en las Otras banderas del Enlazador y cuando anexó el "- all_load-lstdc++ " junto con él recibí el mensaje de error de este post. Cuando eliminé el " ObjC-all_load "y solo agregué el"- all_load-lstdc++ " que construyó el proyecto, pero todavía no se puso como confirmación la sesión de monkey talk en la consola

 2
Author: JJacquet,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-04-09 18:11:16

Es posible que esté utilizando una biblioteca que solo está compilada para hardware REAL. Por ejemplo, si está utilizando una biblioteca Bluetooth como el Zephyr HXM Smart, probablemente no se compilará en el simulador, y solo está destinado a ejecutarse en dispositivos reales.

 2
Author: DiscDev,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-10-07 19:41:56

Se encontró con un problema similar con IOS 6. Fue capaz de resolverlo mediante la adición de storekit.marco al "Enlace Binario con Bibliotecas" en la sección fases de compilación.

Ahora, funciona como un encanto.

 1
Author: Troy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-01-07 17:23:24

Tengo el mismo problema con 7 errores cuando agrego PSTCollectionviewcontroller .La única solución para este problema es comprobar su "xcode phases> fases de compilación> > compilar fuentes" aquí añadir su todo ".m" archivos ..Espero que esta publicación ayude a los usuarios en el futuro.

 1
Author: Naveen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-04-25 08:03:39

En el mío, estaba usando Cocoapods para un proyecto de Realidad Aumentada y lo que descubrí fue que cuando implementas cocoapods y abres tu proyecto .workspace, terminas con el objetivo del proyecto Xcode y esos Pods objetivo que implementaste dentro del mismo archivo. Lo que estaba pasando era que algunos de los .m estaban siendo utilizados por ambos. Después de eliminar los duplicados para el objetivo Xcode en Fases de compilación > > Compilar fuentes, funcionó bien.

 1
Author: Joao Paulo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-02-03 20:19:58

Descubrí este mensaje ALTAMENTE engañoso al intentar actualizar a la nueva biblioteca de Google Analytics.

En mi caso el problema era tener DOS COPIAS EN CONFLICTO de la biblioteca. Estaban en carpetas diferentes, pero ambos estaban listados en las rutas de compilación de la biblioteca de mi aplicación (en Configuración de compilación).

Mover todos los archivos de biblioteca obsoletos fuera de la carpeta terminó haciendo el truco e hizo que los misteriosos mensajes de error desaparecieran.

 1
Author: bkbeachlabs,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-08-03 16:11:25

Compruebe que todos los recursos del paquete se copian en la fase de compilación.

 1
Author: Arpan Dixit,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-08-16 12:04:02

Producto = > Limpio hizo el truco para mí

 1
Author: YogevSitton,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-11-06 10:06:59

La respuesta es simplemente arrastrar y soltar la carpeta sobre el proyecto y hacer clic en copiar.

 0
Author: Mann,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-08-09 09:53:26

Recibí este mensaje cuando arrastré y solté algunos archivos fuente de otro proyecto. Cuando los borré y luego los agregué a través de la " Agregar archivos..."desde el menú Archivo, se construyó sin el error.

 0
Author: RyeMAC3,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-07-07 14:37:20

Tuve un error similar con NSManagedObject y fue porque estaba usando Core Data pero me faltaba el Core Data framework en las Fases de compilación - Enlazar Binario con Bibliotecas, como algunos otros han respondido

 0
Author: Sam,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-07-17 17:07:22

Puede obtener este tipo de error si agrega bibliotecas de terceros en su proyecto que requieren marcos nativos no incluidos en su proyecto.

Tienes que mirar dentro de la .h y .m archivos de su biblioteca recién agregada y vea qué frameworks requiere, luego incluya esos frameworks en su proyecto (Target > Build Phases > Link Binary With Libraries).

 0
Author: Cosmin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-09-11 14:55:01

Intente eliminar el framework, limpiar el proyecto, agregarlo de nuevo y compilar. O Elimine la clase que ha sido agregada por xcode en compile source, clean project, agréguela de nuevo y luego compile.

 0
Author: Saif,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-10-13 08:16:53

Recuerde que puede poner alguna macro en cualquier controlador de vista que llame a los archivos que ya ha eliminado.

La aplicación no mostrará ningún error hasta que compile su aplicación, lanzará el error en la fase de compilación .o archivos.

Recuerde eliminar cualquier MACRO que llame a archivos que ya haya eliminado.

Gracias:)

 0
Author: Abo3atef,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-01-21 01:49:13

Además de lo que hizo Allan, agregando clases faltantes, seguí la solución de @emdog4 y agregué la biblioteca de Datos Principales yendo a Construir Fases en Xcode y bajo el 'Enlace Binario con Bibliotecas' haciendo clic en el + y seleccionando el 'CoreData.marco". Esto solucionó mi error

 0
Author: malkoty,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-03-11 15:12:54

En mi caso fue un poco diferente

En el Encabezado de prefijo había una definición que faltaba

#ifdef DEBUG
#   define TWDLog(fmt, ...) NSLog((@"\n%s\n" fmt), __PRETTY_FUNCTION__, ##__VA_ARGS__)
#else
#   define TWDLog(...)
#endif

Así que busca PROJECTNAME-Prefix.pch y comprueba si le falta algo en ambos proyectos

 0
Author: Shereef Marzouk,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-06-27 06:03:18