Símbolos no definidos para la architecture i386: _OBJC_CLASS _ $ _ SKPSMTPMessage “, referenciado de: error

He importado el marco para enviar correo electrónico desde la aplicación en segundo plano, es decir, SKPSMTPMessage Framework. ¿Alguien puede sugerir por qué se muestra el siguiente error?

 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 qué marco se toma: –

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 checkbox del proyecto y la checkbox del objective también.

Puede obtener este tipo de error si el archivo de su clase ‘.m no figura en la lista debajo del paso “Comstackr fonts” de la pestaña “Crear fases” de su destino. Normalmente Xcode hace esto por usted, pero a veces pierde la ttwig y necesita agregar el archivo .m manualmente.

Para hacer esto:

TargetSettings -> Build Phases -> Compile Sources -> agregue su clase .m -> Build and Run

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

Compruebe las propiedades válidas de Arquitecturas válidas y Construir architecture activa.

enter image description here

Si está utilizando cocoapods, asegúrese de que la configuración de comstackción de su objective contenga $ (heredado) en la sección de indicadores del otro enlazador.

enter image description here

¿Su marco está comstackdo para armv (x)? Me parece que está comstackdo para i386, cuyo código no se ejecutará en un dispositivo iOS. O bien está comstackda para armv (x) y está intentando ejecutarlo en el simulador, que es el código i386. Asegúrate, usando las configuraciones de comstackción Akshay mostradas arriba, de que tu marco está comstackdo correctamente para el chip en el que vas a ejecutarlo.

Si importa algún otro proyecto en xcode y si el proyecto actual e importación tienen los mismos archivos en la fuente del comstackdor, simplemente elimine el mismo archivo en el proyecto actual en la configuración “Fase de comstackción”. Me funcionó.

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

También podría ser que falte vincularse con una biblioteca binaria, verificar las fases de comstackción en sus Targes, agregar las bibliotecas requeridas y luego Product> Clean Product> Build

¡Eso también debe funcionar!

Tuve este problema cuando abrí el mismo proyecto dos veces, solo un proyecto era el original y el otro se clonó desde una URL de git.

‘Producto’> ‘Limpio’ resolvió el problema.

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

enter image description here

Cuando encontré el mismo problema que este:

Símbolos indefinidos para la architecture i386:

_OBJC_CLASS _ $ _ SKPSMTPMessage, al que se hace referencia desde: objc-class-ref en ConfirmController.o

Resultó que me olvidé de agregar framework. Fue QuartzCore.framework para ser exacto.

prueba esto último:

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

Entonces, lo que hice fue seguir cada paso de dicho tutorial y comstackr después de cada paso … la línea ofensiva resultó ser esta: agregar -toda_carga a las configuraciones de comstackción-> otras banderas enlazadoras

resulta que esta bandera fue recomendada una vez para vincular categorías a bibliotecas estáticas … pero luego resultó que esta bandera ya no era necesaria Xcode 4.2+ .. (lo mismo ocurre con la bandera -force_load … que también era recomendado en otras publicaciones ) ..

Cuando encontré el mismo problema, olvidé agregar “versión comstackda de la biblioteca (con la extensión .a)”. Normalmente agregamos la biblioteca del proyecto importado en Target Dependency en Build Fhases, pero olvidamos agregar “compiled library” en Link Binary con Libraries in Build Phases.

Agregando lo que funcionó para mí en caso de que otros tengan el mismo problema y terminen aquí. Tenía un proyecto anterior que tenía la configuración CLANG_ENABLE_MODULES establecida en No. Después de horas de frustración, comparé con un proyecto en funcionamiento y descubrí que tenía Enable Modules Set en no en mi configuración de comstackción LLVM. Establecer esto en Sí solucionó mi problema y la aplicación crea bien.

Configuración del proyecto -> Configuración de comstackción -> buscar ‘Módulos’ y Actualizar habilitar módulos (C y Objetivo-C) a SÍ.

No agregué el “-all_load -lstdc ++” a otros indicadores de enlaces en la configuración de comstackción y pude ejecutar el sim sin errores, pero no obtuve el resultado de registro de MonkeyTalk cuando se lanzó y el guión anterior que escribí que solía conectar ahora mostró el botón de reproducción como deshabilitado. La salida del MT IDE se mostró como “Conexión configurada en el simulador de iOS”, pero no se puede seleccionar el botón de ejecución / reproducción.

El proyecto original tenía “ObjC -all_load” en las otras banderas del enlazador y cuando agregué el “-all_load -lstdc ++” junto con él recibí el mensaje de error de que se trata esta publicación. Cuando eliminé el “ObjC -all_load” y solo agregué el “-all_load -lstdc ++”, el proyecto se construyó, pero todavía no se pudo cerrar la sesión de conversación de mono como confirmación en la consola.

Es posible que esté utilizando una biblioteca que solo se comstack para hardware REAL. Por ejemplo, si está usando una biblioteca Bluetooth como Zephyr HxM Smart, probablemente no se comstackrá en el simulador y solo se ejecutará en dispositivos reales.

Se topó con un problema similar con IOS 6. Pudo resolverlo agregando storekit.framework al “Enlace binario con bibliotecas” en la sección de fases de comstackción.

Ahora funciona como un encanto.

Tengo el mismo problema con 7 errores cuando agrego PSTCollectionviewcontroller. La única solución para este problema es comprobar sus “xcode -> comstackr fases -> comstackr fonts” aquí agregue todos sus archivos “.m”. Espero que esto la publicación ayudará a los usuarios en el futuro.

En el mío, estaba usando Cocoapods para un proyecto de Realidad Aumentada y descubrí que cuando implementa cocoapods y abre el espacio de trabajo de su proyecto, termina con el objective del Proyecto Xcode y los Pods se dirigen a usted implementados dentro del mismo archivo. Lo que sucedía era que algunos de los .m estaban siendo utilizados por ambos. Después de eliminar los duplicados para el objective de Xcode en Build Phases >> Compile Sources, funcionó bien.

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 CONFLICTIVAS de la biblioteca. Estaban en carpetas diferentes, pero ambas se enumeraban en las Rutas de comstackción de la Biblioteca de mi aplicación (en Configuraciones de comstackción).

Mover todos los archivos de biblioteca obsoletos de la carpeta terminaron haciendo el truco e hicieron desaparecer los misteriosos mensajes de error.

Compruebe que todos los recursos de su paquete se copien en la fase de comstackción.

Product => Clean hizo el truco para mí

La respuesta es que simplemente arrastre y suelte la carpeta sobre el proyecto y haga clic en copiar.

Recibí este mensaje cuando arrastro y solté algunos archivos fuente de otro proyecto. Cuando los borré y luego los agregué a través de “Agregar archivos …” en el menú Archivo, se creó sin el error.

Tuve un error similar con NSManagedObject y fue porque estaba usando Core Data pero me faltaba el framework Core Data en Build Fhases – Link Binary With Libraries, como algunos otros han respondido

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

Necesita buscar dentro de los archivos .h y .m de su biblioteca recién agregada y ver qué frameworks requiere, luego incluir esos frameworks en su proyecto (Target> Build Phases> Link Binary With Libraries).

Intente eliminar el marco, limpiar el proyecto, agregarlo y comstackr. O elimine la clase que ha sido agregada por xcode en compile source, clean project, agréguelo y compile.

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 construya su aplicación, arrojará el error en la fase de comstackción en archivos .o.

Recuerde eliminar cualquier MACRO que esté llamando a los archivos que ya ha eliminado.

Gracias 🙂

Además de lo que hizo Allan, agregando las clases faltantes, seguí la solución de @ emdog4 y agregué la biblioteca Core Data yendo a Build Fhases en Xcode y debajo de ‘Link Binary with Libraries’ haciendo clic en + y seleccionando ‘CoreData.framework’ . Esto resolvió mi error

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 busque PROJECTNAME-Prefix.pch y compruebe si falta algo en ambos proyectos