Ahora tengo la misma pregunta con el título anterior pero aún no he encontrado la respuesta correcta. Recibí 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 la razón de este error porque agregué -ObjC
al Other Linker Flags
. Después de eliminar este valor, puedo construir mi proyecto con éxito, pero no sé por qué. ¿Alguien puede explicar esto?
ios
objective-c
xcode5
sotavento
fuente
fuente
#include
'd' o#import
'd algo (probablemente el MoboSDK, sea lo que sea) más de una vez.GoogleConversionTrackingSDK-iOS-3.0
a mi proyecto. Antes de eso, funciona bien. También intenté eliminarlo, pero el error aún ocurre.Respuestas:
Significa que ha cargado las mismas funciones dos veces. A medida que el problema desaparecerá después de la eliminación
-ObjC
deOther Linker Flags,
este medio que este resultado opción que funciona cargas dos veces:de preguntas y respuestas técnicas
https://developer.apple.com/library/content/qa/qa1490/_index.html
fuente
-ObjC
bandera. Por lo tanto, debo mantener esta bandera en la configuración de mi proyecto. Entonces, ¿podría sugerir alguna otra solución?Para mí, cambiar 'Sin bloques comunes' de Sí a No (en Objetivos-> Configuración de compilación-> Apple LLVM - Generación de código) solucionó el problema.
fuente
NO
? ¿Cuál es la razón detrás de esto?Estúpido, pero asegúrate de no haber
#import
editado un.m
archivo por error en alguna partefuente
En mi caso, acabo de crear un archivo de encabezado para definir cadenas constantes como esta:
Resolví este escenario usando
static
:fuente
extern
en lugar destatic
:extern NSString * const kNotificationName;
. Lo cual es extraño, porque u generalmente no añadió tales prefijo, y funcionó bien ..AppStrings.h
son constantes, sin embargo, causará havok si desea una variable mutable global ya que cada archivo fuente que incluye el archivo de encabezado tendrá su propia copia de la variable. Es una mala solución.Encontré que la respuesta aceptada toca el problema, pero no me ayudó a resolverlo, espero que esta respuesta ayude con este problema muy frustrante.
"Significa que ha cargado las mismas funciones dos veces. A medida que el problema desaparece después de eliminar -ObjC de otros indicadores de vinculador, esto significa que esta opción da como resultado que las funciones se carguen dos veces:"
En términos simples, esto significa que tenemos dos archivos en nuestro proyecto con exactamente el mismo nombre. ¿Quizás estás combinando un proyecto en otro? Eche un vistazo a los errores sobre el error "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ó :)
fuente
Yo tengo el mismo problema. En Xcode 7.2 en la ruta Objetivo del proyecto> Configuración de compilación> Sin bloques comunes, lo cambio a NO.
fuente
Ocurre también cuando declaras variables constantes con el mismo nombre en diferentes clases:
en el archivo Mensaje.m
en el archivo Chat.m
fuente
Esto ocurrió cuando acepté la ventana emergente "configuración recomendada" en un proyecto que desarrollé hace dos años en Objective-C.
El problema fue que cuando aceptó la actualización de "configuración recomendada", Xcode cambió automáticamente o agregó algunas configuraciones de compilación, incluidas
GCC_NO_COMMON_BLOCKS = YES;
.Esto hizo que la compilación fallara con el
duplicate symbol
error en mi proyecto actualizado. Así que cambiéNo Common Block
aNO
mi configuración de compilación y el error desapareció.fuente
La forma más rápida de encontrar el duplicado es:
fuente
Los siguientes pasos me resolvieron el problema.
fuente
Elimine -ObjC de otros indicadores de vinculador o compruebe que importó cualquier archivo .m en lugar de .h por error.
fuente
.m"
he notado que importé el archivo .m en lugar de .h y después de arreglarlo, ¡simplemente funcionó!Talk is cheap, show me the code!
¡Salud!Mi situación con algún proyecto heredado abierto en Xcode 7.3 fue:
seguido con una lista de dos archivos no relacionados. luego, esto se repitió un par de veces y finalmente:
Lo que me resolvió fue cambiar la declaración de enumeración de:
a esto:
Si alguien tiene una explicación para esto, por favor, ilumíneme.
fuente
Definir la misma variable bajo @implementation en más de una clase también puede causar este problema.
fuente
En mi caso, había dos archivos con el mismo nombre en la ubicación
fuente
Funciono para mi
fuente
Experimenté este problema después de instalar Cocoapods. Ahora ocurre cada vez que actualizo algunos pods. Solución que he encontrado:
Ir a la terminal:
Además, verifique el elemento "Incrustar siempre bibliotecas rápidas" en su Configuración de compilación. Debe estar "desvanecido", lo que indica que está utilizando la configuración predeterminada. Si se establece en un SÍ manual, presione eliminar sobre él para revertirlo a la configuración predeterminada. Esto detuvo el comportamiento.
fuente
Para mí, durante la configuración de proyecto recomendada por Xcode8, actualice "Sin bloques comunes" a SÍ, lo que causa este problema.
fuente
Hoy recibí el mismo error. La palabra clave del error es
duplicate
. Lo arreglo por:fuente
Asegúrese de no haber importado un archivo .m por accidente, es posible que desee eliminar sus datos derivados en la Ventana de Proyectos y luego compilar y ejecutar nuevamente.
fuente
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 se abordó manualmente (aunque de manera deficiente), hubo referencias duplicadas a archivos de clase individuales en .pbxproj. Eliminarlos del Proyecto> Fases de compilación> Compilar orígenes me arregló todo.
Espero que esto ayude a alguien en el futuro.
fuente
ld: X duplicate symbols for architecture x86_64
. Se solucionó eliminando los archivos de origen mencionados en el mensaje de error y volviéndolos a agregar al proyecto.Similar a Juice007, había declarado e inicializado una variable de tipo C en dos archivos .m diferentes (¡que no fueron importados!)
sin embargo, este método de declarar e inicializar una variable, incluso en .m, incluso en @implementation, le otorga un alcance global. Sus opciones son:
Declararlo como estático, para limitar el alcance a la clase:
Elimine la inicialización (lo que hará que las dos clases compartan la var global):
Declararlo como una propiedad:
Declararlo como un iVar apropiado en la interfaz @
fuente
En mi caso, tenía dos
main()
métodos definidos en mi proyecto y eliminar uno resolvió el problema.fuente
Recientemente tuve un dolor de cabeza buscando la fuente de un error. Me sorprendí cuando descubrí que mi aplicación no quería compilar, simplemente porque tenía el siguiente fragmento de código en diferentes clases:
Espero que pueda ayudar a alguien.
fuente
Espero que definitivamente te ayude
Tengo el mismo error 3 símbolos duplicados para la arquitectura x86_64
En mi caso, he copiado el código de otro archivo del mismo proyecto, por ejemplo. código del archivo Am a Bm y después de la compilación recibí un error como mención. y he resuelto el error cambiando el nombre de la variable global.
Este error se produjo en mi caso debido a la misma declaración para la variable global en ambos archivos.
fuente
Obtuve el mismo error cuando agregué un repositorio de pod
para un código fuente ya agregado (SWRevealViewController) de gitHub. Por lo tanto, el error se solucionará eliminando el código fuente o el repositorio de pod.
Caso # 2:
La segunda vez, este error apareció cuando declaro una constante en el archivo .h .
fuente
Las respuestas anteriores no funcionaron para mí. Así es como lo evité:
1) en el buscador, elimine toda la carpeta Pods y el archivo Podfile.lock 2) cierre el proyecto xcode 3) ejecute pod install en el terminal 4) abra el proyecto xcode, ejecute el comando clean build
Trabajó para mí después de eso.
fuente
El mismo problema ocurrió conmigo cuando estaba integrando el proyecto lob dentro de mi proyecto.
En realidad, el proyecto lob también tiene los archivos AFNetworking, por lo que elimino los archivos .m del proyecto lob.
En realidad, los archivos .m están en conflicto con los archivos My project POd / AFNetworking / .m
fuente
En Xcode 6.3.2. He verificado todas las posibilidades como se indica a continuación
1: No he importado el archivo .m en mi proyecto.
2: eliminado
-ObjC
de otro indicador de enlazador .3: Eliminé todos mis datos derivados .
Todavía recibo el mismo error. He eliminado este error al eliminar cualquier declaración de variable del
.pch
archivo . En mi caso, he declaradoAppDelegate
objeto en el.pch
archivo. Finalmente encontré una razón que causa un error. así que elimino la declaración de cualquier variable del archivo .pch y el encanto de trabajo de mi proyecto.fuente
Otro error tonto que causará este error son los archivos repetidos. Accidentalmente copié algunos archivos dos veces. Primero fui a Objetivos -> Fases de construcción -> Compilar fuentes. Allí noté dos archivos en esa lista dos veces y sus ubicaciones.
fuente
También tengo este error hoy. Eso es porque definí un valor constante en un
.m
archivo. Pero definí otro.m
archivo que también incluía este valor constante. Eso significa que tiene dos mismos valores constantes. Entonces aparece este error. Y mi solución es agregar una palabra clave "static
" antes del valor constante. Como:Y luego construyo el proyecto, no informará este error.
fuente