Símbolos duplicados para la architecture x86_64 bajo Xcode

Ahora tengo la misma pregunta con el título anterior, pero aún no he encontrado la respuesta correcta. Obtuve el error:

/Users/nle/Library/Developer/Xcode/DerivedData/TestMoboSDK-Client-cgodalyxmwqzynaxfbbewrooymnq/Build/Intermediates/TestMoboSDK-Client.build/Debug-iphonesimulator/TestMoboSDK-Client.build/Objects-normal/x86_64/MoboSDK.o /Users/nle/Library/Developer/Xcode/DerivedData/TestMoboSDK-Client-cgodalyxmwqzynaxfbbewrooymnq/Build/Products/Debug-iphonesimulator/libMoboSDK.a(MoboSDK.o) duplicate symbol _OBJC_METACLASS_$_MoboSDK in: /Users/nle/Library/Developer/Xcode/DerivedData/TestMoboSDK-Client-cgodalyxmwqzynaxfbbewrooymnq/Build/Intermediates/TestMoboSDK-Client.build/Debug-iphonesimulator/TestMoboSDK-Client.build/Objects-normal/x86_64/MoboSDK.o /Users/nle/Library/Developer/Xcode/DerivedData/TestMoboSDK-Client-cgodalyxmwqzynaxfbbewrooymnq/Build/Products/Debug-iphonesimulator/libMoboSDK.a(MoboSDK.o) ld: 75 duplicate symbols for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation) 

Cualquier ayuda es apreciada.

Finalmente descubro el motivo de este error porque agregué -ObjC a las Other Linker Flags . Después de eliminar este valor, puedo construir mi proyecto con éxito, pero no sé por qué. ¿Alguien puede explicar esto?

75 símbolos duplicados para la architecture x86_64

Significa que ha cargado las mismas funciones dos veces. A medida que el problema desaparece después de eliminar -ObjC de Other Linker Flags, esto significa que esta opción resulta que las funciones se cargan dos veces:

de Technical Q & A

Este indicador hace que el enlazador cargue cada archivo de objeto en la biblioteca que define una clase o categoría Objective-C. Si bien esta opción generalmente dará como resultado un archivo ejecutable más grande (debido a un código de objeto adicional cargado en la aplicación), permitirá la creación exitosa de bibliotecas estáticas efectivas Objective-C que contienen categorías en las clases existentes.

https://developer.apple.com/library/content/qa/qa1490/_index.html

Para mí, cambiar ‘No Common Blocks’ de Sí a No (en Destinos -> Configuración de comstackción -> Apple LLVM – Generación de código) solucionó el problema.

Estúpido, pero asegúrate de no haber #import un archivo .m por error en algún lado

En mi caso, acabo de crear un archivo de cabecera para definir cadenas constantes como esta:

 NSString *const AppDescriptionString = @"Healthy is the best way to keep fit"; 

Resolví este escenario usando static :

 static NSString *const AppDescriptionString = @"Healthy is the best way to keep fit"; 

Ocurre también cuando declaras variables const con el mismo nombre en diferentes clases:

en el archivo Message.m

 const int kMessageLength = 36; @implementation Message @end 

en el archivo Chat.m

 const int kMessageLength = 20; @implementation Chat @end 

Yo tengo el mismo problema. En Xcode 7.2 en ruta Project Target> Build Setting> No Common Blocks, lo cambio a NO.

Esto ocurrió cuando acepté una ventana emergente de “configuraciones recomendadas” en un proyecto que desarrollé hace dos años en Objective-C.

El problema era que cuando aceptaba la actualización de “configuraciones recomendadas”, Xcode cambiaba o agregaba automáticamente algunas configuraciones de comstackción, incluyendo GCC_NO_COMMON_BLOCKS = YES; .

Esto hizo que la construcción fallara con el error de duplicate symbol en mi proyecto actualizado. Así que cambié No Common Block a NO en mi configuración de comstackción y el error desapareció.

Encontré que la respuesta aceptada toca el problema pero no me ayudó a resolverlo, con suerte esta respuesta ayudará con este tema tan frustrante.

 duplicate symbol _OBJC_IVAR_$_BLoginViewController._hud in: 17 duplicate symbols for architecture x86_64 

“Significa que ha cargado las mismas funciones dos veces. A medida que el problema desaparece después de eliminar -ObjC de otros indicadores del enlazador, esto significa que esta opción resulta que las funciones se cargan dos veces:”

En términos sencillos, esto significa que tenemos dos archivos en nuestro proyecto con exactamente el mismo nombre. ¿Tal vez estás combinando un proyecto en otro? Eche un vistazo a los errores que se encuentran arriba del error de “símbolos duplicados” para ver qué carpeta está duplicada, en mi caso fue BLoginViewController.

Por ejemplo, en la imagen a continuación puede ver que tengo dos BImageViewControllers, para mí esto es lo que estaba causando el problema.

Tan pronto como eliminé uno, el problema desapareció 🙂

enter image description here

Elimine -ObjC de otros indicadores de enlazador o compruebe que importó cualquier archivo .m en lugar de .h por error.

Los siguientes pasos resolvieron el problema para mí.

  1. Ve a Build Fhases en la configuración de Target.
  2. Vaya a “Enlace binario con bibliotecas”.
  3. Compruebe si alguna de las bibliotecas existe dos veces.
  4. Construir de nuevo

La forma más rápida de encontrar el duplicado es:

  1. Ir a objectives
  2. Ve a Construir Fases
  3. Ir a comstackr fonts
  4. Eliminar archivos duplicados.

Definir la misma variable bajo @implementation en más de una clase también puede causar este problema.

Mi situación con algún proyecto heredado abierto en Xcode 7.3 fue:

 duplicate symbol _SomeEnumState in: 

seguido de una lista de dos archivos no relacionados.o, luego esto se repitió un par de veces, y finalmente:

 ld: 8 duplicate symbols for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation) 

Lo que me solucionó fue cambiar la statement enum de:

 enum SomeEnumState { SomeEnumStateActive = 0, SomeEnumStateUsed = 1, SomeEnumStateHidden = 2 } SomeEnumState; 

a esto:

 typedef NS_ENUM(NSUInteger, SomeEnumState) { SomeEnumStateActive = 0, SomeEnumStateUsed = 1, SomeEnumStateHidden = 2 }; 

Si alguien tiene una explicación para esto, por favor ilumíname.

En mi caso, había dos archivos con el mismo nombre en la ubicación

Objetivos> Fases de comstackción> Comstackr orígenes y eliminar los archivos duplicados.

Para mí, durante el Xcode8, la configuración de proyecto recomendada actualiza “No Common Blocks” a YES, lo que causa este problema.

Asegúrese de que no haya importado un archivo .m por accidente, es posible que desee eliminar sus datos derivados en la Ventana de Proyectos y luego comstackr y ejecutar de nuevo.

Obtuve el mismo error cuando agregué un repository de pod

 pod 'SWRevealViewController' 

para un código fuente ya agregado (SWRevealViewController) de gitHub. Por lo tanto, el error se solucionará eliminando el código fuente o el repository de pod.

Caso # 2:

La segunda vez, este error apareció cuando declaro una constante en el archivo .h .

 NSString * const SomeConstant = @"SomeValue"; @interface AppDelegate : UIResponder  { ... ... 

Para cualquier otra persona que tenga este problema, no vi mi resolución en ninguna de estas respuestas.

Después de tener un conflicto de fusión .pbxproj que fue abordado manualmente (aunque deficientemente), hubo referencias duplicadas a archivos de clase individuales en .pbxproj. Al eliminarlos del Proyecto> Fases de comstackción> Comstackr fonts se solucionó todo para mí.

Espero que esto ayude a alguien en el futuro.

El mismo problema me sucedió cuando integé el proyecto lob dentro de mi proyecto.

enter image description here

En realidad, el proyecto lob también tiene los archivos AFNetworking, así que elimino los archivos .m del proyecto lob.

enter image description here

En realidad, los archivos .m están en conflicto con My project POd / AFNetworking / .m

enter image description here

Recientemente tuve un dolor de cabeza buscando la fuente de un error. Me preguntaba, cuando descubrí que mi aplicación no quiere comstackr, simplemente porque tenía el siguiente fragmento de código en diferentes clases:

 dispatch_time_t getDispatchTimeByDate(NSDate *date) { NSTimeInterval interval; double second, subsecond; struct timespec time; dispatch_time_t milestone; interval = [date timeIntervalSince1970]; subsecond = modf(interval, &second); time.tv_sec = second; time.tv_nsec = subsecond * NSEC_PER_SEC; milestone = dispatch_walltime(&time, 0); return milestone; } 

Espero que pueda ayudar a alguien.

Otro error tonto que causará este error son los archivos repetidos. Accidentalmente copié algunos archivos dos veces. Primero fui a Targets -> Build Phases -> Compile orígenes. Allí noté algunos archivos en esa lista dos veces y sus ubicaciones.

Espero que definitivamente te ayude

Obtuve el mismo error 3 símbolos duplicados para la architecture x86_64

en mi caso, he copiado el código de otro archivo del mismo proyecto, por ej. código de archivo Am a Bm y después de la comstackción recibí un error como se menciona. y tengo un error de resolución cambiando el nombre de la variable global.

este error vino en mi caso debido a la misma statement de variable global en ambos archivos.

También hoy tengo esta falla. Esto se debe a que definí un valor de const en un archivo .m Pero definí otro archivo .m que también incluía este valor de const. Eso significa que tiene dos mismos valores de const.Así que aparece este error. Y mi solución es agregar una palabra clave ” static ” antes del valor de const. Como:

 static CGFloat const btnConunt = 9; 

Y luego construyo el proyecto, no informará este error.

1. Ir a Fases de comstackción 2. Buscar el nombre del archivo 3. Eliminar duplicado -> El error desaparecerá.

Si no es así, intente buscar “file.m”, si ve algún archivo “import” file.m “, borre esta línea

Me enfrento al mismo error de lo que hice

1.Copie el archivo de símbolos duplicados (nombre de clase o nombre de estructura) del extremo que se muestra arriba de la línea (símbolos duplicados para la architecture x86_64).

2. Pégalo en Buscar Navegador y presiona enter

Me mostró la clase duplicada. Elimino la clase duplicada y se ejecuta con éxito.

Ninguna de las soluciones anteriores funciona para mí, solo la solucioné yo mismo.

Obtuve el símbolo duplicado de mi core data model que hago yo mismo, pero en mi inspector .xcdatamodeld , elijo la propiedad Class Definition de Class Definition de Codegen , supongo que eso es lo que está mal. Luego elijo Manual/None , se arregló.

Espero que esto pueda ser útil para ti.

Este error generalmente ocurre cuando ha vinculado cualquier biblioteca o archivo dos veces. En la descripción del error, se enumerará el nombre del archivo duplicado, puede buscar y asegurarse de que no tiene duplicados. Si encuentra duplicados, elimine la referencia a uno de ellos para jugar seguro

Hoy recibí el mismo error. La palabra clave del error es duplicate . Lo soluciono por:

 1. Remove the duplicate file at Build Phases-->Compile Sources 2. If you can not remove it at Build Phases, you need find the file at your project and remove the reference by DELETE : 

eliminar referencia

 3. Add the file to your project again 4. Add the file's .m to your Build Phases-->Compile Sources again 5. Build your project, the error will disappear 

En Xcode 6.3.2. He verificado todas las posibilidades como abajo

1: No he importado el archivo .m en mi proyecto.

2: Se eliminó -ObjC de la bandera del otro vinculador .

3: eliminó todos mis datos derivados .

Todavía estoy recibiendo el mismo error. He eliminado este error eliminando cualquier statement de variable del archivo .pch . en mi caso, he declarado el objeto AppDelegate en el archivo .pch . finalmente encontré un motivo que causa error. entonces elimino la statement de cualquier variable del archivo .pch y el hechizo de trabajo de mi proyecto.

Asegúrese de no importar [ViewController.m] en lugar de archivo de encabezado

 #import "ViewController.m"