xcode compiler-errors duplicates symbol

Error de símbolo duplicado en Xcode



compiler-errors duplicates (5)

Estoy encontrando errores de "símbolo duplicado" en Xcode 4.5.1 cuando intento crear un proyecto después de agregar mi propio marco de trabajo. Verifiqué los archivos de framework para duplicados y no hay ninguno. Pero cuando agrego el marco a un proyecto, se queja de estos errores. Por favor recomiende..

duplicate symbol _NXArgc in: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.0.sdk/usr/lib/crt1.3.1.o /Users/idcc/Test/MyFW/Products/MyTestFW.framework/MyTestFW duplicate symbol _NXArgv in: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.0.sdk/usr/lib/crt1.3.1.o /Users/idcc/Test/MyFW/Products/MyTestFW.framework/MyTestFW duplicate symbol ___progname in: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.0.sdk/usr/lib/crt1.3.1.o /Users/idcc/Test/MyFW/Products/MyTestFW.framework/MyTestFW duplicate symbol _environ in: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.0.sdk/usr/lib/crt1.3.1.o /Users/idcc/Test/MyFW/Products/MyTestFW.framework/MyTestFW duplicate symbol start in: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.0.sdk/usr/lib/crt1.3.1.o /Users/idcc/Test/MyFW/Products/MyTestFW.framework/MyTestFW ld: 8 duplicate symbols for architecture armv7 clang: error: linker command failed with exit code 1 (use -v to see invocation)

Gracias por adelantado..


Esos símbolos están en crt.o, el código de inicio de la biblioteca C estándar. Normalmente debería ser el punto de entrada del archivo ejecutable para inicializar variables y objetos globales. También llamará a tu función principal.

Pero para un marco, no debería incluirlo en su binario porque el marco no debería tener main. Creo que tiene la opción "Vincular con la biblioteca estándar" como "SÍ" en la configuración de generación de destino de su infraestructura. Esto vinculará crt.o en su marco. Y cuando vincula el marco en un proyecto, habrá símbolos duplicados.

Establezca la opción "Enlace con biblioteca estándar" en NO en su configuración de compilación.


Si tiene este problema solo cuando ejecuta la aplicación en el simulador, se soluciona eliminando la carpeta local

~/Library/Developer/CoreSimulator

Xcode lo restaurará después de la primera compilación y ejecución. ASEGÚRESE DE RESPALDAR CUALQUIER CONFIGURACIÓN antes de hacer esto (especialmente los relacionados con dispositivos simuladores).

Probado en Xcode Versión 7.2.1 (7C1002)


Su aplicación ha proporcionado una implementación en la que hay 8 símbolos de duplicación.

Hay varias maneras en que podrías haber hecho esto:

Tienes dos módulos que declaran la misma clase. Tal vez uno ya no es necesario?

Está importando cualquier archivo de encabezado en los archivos .m y .h :-( Eliminar de un lugar).

Está importando cualquier archivo .m en algún lugar. : - (Importar archivo .h en lugar de archivo .m)

Usted ha definido y declarado cualquier variable const en el exterior (arriba) la @interface {} en cualquier archivo .h, podría estar duplicada. : - (Hazlo en el archivo .m)


También verifique si las variables globales como las constantes se definen correctamente en el archivo .h en la aplicación.

La forma correcta de definir la variable global es usar la variable extern en el archivo .h .

Nota: Esto no es un problema con la versión anterior de Xcode. Enfrenté el problema con Xcode 6.3 y fue resuelto.


Tuve el mismo problema con el uso de dos marcos de terceros. Resolví esto eliminando "all_load" de "Other Linker Flags" en la configuración de compilación.