ios - ensamblador - instrucciones x86
SÃmbolos duplicados para la arquitectura x86_64 bajo Xcode (30)
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 arquitectura 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
1. Ir a Fases de compilació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
Asegúrese de no importar [ViewController.m] en lugar de archivo de encabezado
#import "ViewController.m"
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 compilar y ejecutar de nuevo.
Definir la misma variable bajo @implementation en más de una clase también puede causar este problema.
El mismo problema me sucedió cuando integé el proyecto lob dentro de mi proyecto.
En realidad, el proyecto lob también tiene los archivos AFNetworking, así que elimino los archivos .m del proyecto lob.
En realidad, los archivos .m están en conflicto con My project POd / AFNetworking / .m
Elimine -ObjC de otros indicadores de enlazador o compruebe que importó cualquier archivo .m en lugar de .h por error.
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 declaración 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 declaración de cualquier variable del archivo .pch y el hechizo de trabajo de mi proyecto.
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";
En mi caso, había dos archivos con el mismo nombre en la ubicación
Objetivos> Fases de compilación> Compilar orígenes y eliminar los archivos duplicados.
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ó :)
Espero que definitivamente te ayude
Obtuve 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 ej. código de archivo Am a Bm y después de la compilació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 declaración de variable global en ambos archivos.
Estúpido, pero asegúrate de no haber #import
un archivo .m
por error en algún lado
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
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 compilació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 compilación y el error desapareció.
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 :
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
La forma más rápida de encontrar el duplicado es:
- Ir a objetivos
- Ve a Construir Fases
- Ir a compilar fuentes
- Eliminar archivos duplicados.
Los siguientes pasos resolvieron el problema para mí.
- Ve a Build Fhases en la configuración de Target.
- Vaya a "Enlace binario con bibliotecas".
- Compruebe si alguna de las bibliotecas existe dos veces.
- Construir de nuevo
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 arquitectura 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.
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 declaración 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.
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.
Obtuve el mismo error cuando agregué un repositorio 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 repositorio 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 <UIApplicationDelegate> {
...
...
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
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.
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 compilación> Compilar fuentes se solucionó todo para mí.
Espero que esto ayude a alguien en el futuro.
Para mí, cambiar ''No Common Blocks'' de Sí a No (en Destinos -> Configuración de compilación -> Apple LLVM - Generación de código) solucionó el problema.
Para mí, durante el Xcode8, la configuración de proyecto recomendada actualiza "No Common Blocks" a YES, lo que causa este problema.
Recientemente tuve un dolor de cabeza buscando la fuente de un error. Me preguntaba, cuando descubrí que mi aplicación no quiere compilar, 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.
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.
Yo tengo el mismo problema. En Xcode 7.2 en ruta Project Target> Build Setting> No Common Blocks, lo cambio a NO.