objective c - la compilación falló con: ld: símbolo duplicado_OBJC_CLASS_$_Algebra5FirstViewController
objective-c ios (28)
Recibo este error de repente al ejecutar mi aplicación a través del simulador de iPhone:
clang: error: el comando del enlazador falló con el código de salida 1 (use -v para ver la invocación):
ld: símbolo duplicado _OBJC_CLASS _ $ _ Algebra5FirstViewController en ... / Algebra5-anwcuftojtxtgkfootneeeqhwztj / Build / Intermediates / Algebra5.build / Debug-iphonesimulator / Algebra5.build / Objects-normal / i386 / ExercisesViewController.o y ... / Algebra5-anwcuftojtxtgkfootneeeqhwztj / Compilar / Intermedios / Algebra5.build / Debug-iphonesimulator / PSLE Algebra5.build/Objects-normal/i386/PSLE_Algebra5FirstViewController.o para la arquitectura i386
¿Que es todo esto?
"Enlace binario con bibliotecas" tenía una biblioteca de pod de nombre de proyecto anterior. Solucionado después de la eliminación.
- Artículo de lista
- Proyecto
- Construir fases
- Enlace binario con bibliotecas
- Eliminar la biblioteca en desuso
''El comando del enlazador falló con el código de salida 1 (use -v para ver la invocación)'' - Obtuve este error al ejecutar una aplicación de phonegap en el iPhone. Cambié Build Active Architecture Only a Yes y funcionó bien.
En un caso, vi este error al arrastrar una nueva clase ''.h y .m al proyecto. La única solución que encontré fue eliminar las referencias a estos archivos y luego volver a agregarlos a través del menú del proyecto.
Encontré este article que me proporcionó una solución. Pertenece a Xcode 7, donde el valor predeterminado para No Common Blocks es Sí en lugar de No en versiones anteriores.
Esta es una cita del artículo:
El problema parece ser que el "No hay bloques comunes" en la sección "Apple LLVM 6.1 - Generación de código" en el panel Configuración de compilación está establecido en Sí, en la última versión de Xcode.
Esto causó lo que describiré como referencias circulares donde se hizo referencia a una clase que estaba incluida en mis fuentes de compilación a través de un #import en otro archivo fuente (appDelegate.m). Esto causó bloques duplicados para las variables que se declararon en la clase base original.
Al cambiar el valor a No, de inmediato, mi aplicación compiló y resolvió mi problema.
Eso puede suceder si se hace referencia al mismo archivo .m varias veces en la sección "Compilar orígenes" de su destino en "Fases de compilación". Elimina las entradas duplicadas y deberías estar bien.
Estaba obteniendo un error similar y lo resolví de esta manera .
Intenta configurar Build Architecture Active Only en NO para el proyecto ''Pods'' y el objetivo de tu aplicación
Esto ocurrió para mí cuando llamé a una referencia de UILabel y una int lo mismo, no obtuve un error cuando lo escribí solo cuando traté de ejecutarlo, así que no me di cuenta de que ese era el problema, pero si tiene algo así como una etiqueta que es el "puntaje" y lo llama puntaje, y el nombre de un int, que es el puntaje también puntaje, entonces este problema ocurre.
Esto sucede, algunos archivos faltan en la sección "Fuentes de compilación" o se encuentran entradas duplicadas para algunos archivos. En mi caso, tenía entradas duplicadas para dos archivos, eliminé una entrada para cada uno de los archivos, eso resolvió mi problema. Espero que esto ayude.
Estoy publicando una nueva respuesta porque me encontré con este error y tuve que usar una solución diferente que creo que es específica de iOS 9.
Tuve que desactivar explícitamente el código de bit habilitado en las configuraciones de compilación, que se activa automáticamente en la actualización.
Respuesta a la que se hace referencia: Nuevas advertencias en iOS 9
La única (e infalible) forma de resolver este problema es construir una prueba desde la línea de comando:
xcodebuild -workspace MyProject.xcworkspace/ -scheme MyScheme -sdk iphonesimulator -destination ''platform=iOS Simulator,name=iPhone 7,OS=10.3.1'' test
Entonces, en este punto, tu compilación seguramente fallará, pero verás todo el problema de vinculación. En mi caso, tuve varios problemas como:
- ld: framework ''Foo'' no encontrado
Para resolver esto, necesita en su destino, BuildSettings-> Linking-> OtherLinkerFlags y eliminar el marco ''Foo''. - Uso del identificador no resuelto ''ClassName'' .
Para resolver esto, necesito agregar / verificar la membresía objetivo del archivo al objetivo de UITest también.
Otros problemas posibles serán planteados por xcodebuild y puede solucionarlo fácilmente.
La ejecución de Xcode 4.6.3 en OSX 10.7.5 fue capaz de corregir este error al cambiar Architectures a Native Architecture of Build Machine desde $ (NATIVE_ARCH_ACTUAL).
Lo encontré cuando importé un ViewController.m en TableViewController. Intente eliminar ''#import'' ViewController.m "''si salió. ¡Espero que esto ayude!
Obtuve este error al implementar una subclase sin agregar el marco necesario (MPMoviePlayerController sin el marco MediaPlayer, en este ejemplo)
Obtuve este problema porque accidentalmente importé .m en lugar de .h. Espero que leer esto ahorre a alguien con el mismo problema en algún momento.
Obtuve un error similar al agregar archivos de otro proyecto, como explicó @paiego. Mi error fue que no marqué " Agregar a objetivos ". Como se explicó anteriormente, eliminé las referencias y agregué los archivos nuevamente, pero esta vez comprobando " Agregar a destinos ".
Parece que la clase Algebra5FirstViewController se compila varias veces.
¿Puedes asegurarte de que .m y .mm solo se incluyen una vez en las fuentes de tu proyecto en Xcode? También puede confirmar esto marcando en el registro de compilación (último icono a la derecha, al lado del ícono de puntos de interrupción) y ver que confirme que solo se compiló una vez.
Además, si esta clase es parte de una biblioteca a la que vincula y tiene una clase con el mismo nombre, podría tener el mismo error.
Finalmente, puede intentar limpiar y reconstruir, en caso de que los archivos de objetos antiguos todavía estén presentes y haya algo de basura en los archivos compilados. Por si acaso...
EDITAR
También observo que la segunda referencia se hace en el archivo para ExercisesViewController. Tal vez hay algo en este archivo. O bien importó # el archivo Algebra5FirstViewController en lugar de .h, o el ExercisesViewController tiene @implementation (Algebra5FirstViewController) en lugar de @implementation (ExercisesViewController), o hubo algo de basura con este archivo que se limpiará con un Clean an Rebuild.
Parece que para m, arrastré los archivos al proyecto y después de eso no funcionó, hice clic en el archivo "agregar archivos al proyecto". Ambos fueron el enfoque incorrecto. simplemente arrástrelo a la carpeta de proyectos (en el buscador) que alberga los otros archivos .h y .m.
Recibí esto una vez (accidentalmente) importando los archivos .h y .m en la misma clase.
Se pueden producir variaciones sobre este problema si tiene una biblioteca o archivo faltante. Compruebe que no haya archivos perdidos en su Explorador de proyectos: se escribirán en rojo si Xcode no puede encontrarlos.
Simplemente limpiando CMD + SHIFT + K , entonces construir CMD + B funcionó para mí.
Tengo este mismo problema cuando trabajo con Bolts.framework. Resulta que cuando Bolts se corrompe, ninguna cantidad de reimportación solucionará el problema. Tuve que volver al archivo de descarga original y volver a importarlo completamente desde cero. Esto lo solucionó de inmediato. Fue un problema tan extraño que me tomó mucho tiempo resolverlo ... espero que este consejo les evite a algunos de ustedes las mismas frustraciones :)
Tuve el mismo problema ¡Lo tengo resuelto!
Si ha importado algún archivo al proyecto, entonces verifique que el archivo .m (principal) exista en Destinos (Nombre del proyecto) -> Fases de compilación -> Compilar fuentes.
Si el archivo no existe, inclúyalo usando el botón (+) Agregar que se muestra. Además, si existen archivos duplicados (si los hay), elimínelos.
Ahora presione cmd + shift + k para limpiar el proyecto. New Build no debería mostrar este error.
Tuve el mismo problema con una biblioteca, e intenté todas las respuestas enumeradas aquí y nada me ayudó.
Terminé simplemente eliminando la biblioteca de Link Binary With Libraries y luego volviéndola a agregar y funcionó bien.
Yo tenía el mismo error. Había importado un trabajo de marco de audio que ya no estaba usando. Lo eliminé (¡NO LO ELIMINE!) Y se construyó con éxito.
también tuvo este problema al declarar un const * NSString
en el archivo de encabezado (incorrectamente) en lugar del archivo de implementación (correctamente)
una vez que tengo
18 duplicate symbols for architecture i386
clang: error: linker command failed with exit code 1
Para mí, esto se debe a que he usado "const NSInteger" en mi caja de conmutadores.
Lo que hice fue cambiar el const NSInteger a enum, y reemplazar la referencia con valores enum.
Esto solucionó el error para mí.
[XCODE 7.1 ACTUALIZACIÓN]
Primera opción que funcionó:
Cambié el Deployment Target
de 7.1 a 8.1 y el error desapareció.
Espero que ayude a alguien.
ACTUALIZACIÓN (día 2) : segunda vez vuelvo aquí en 2 días.
El día 2 empecé a tener más errores además de este molesto error. El problema era un archivo conflictivo que Xcode no reconoció. Usé los enlaces a continuación como ayuda:
"_OBJC_CLASS _ $ _ viewsampleViewController", a la que se hace referencia desde:
''ld: advertencia: directorio no encontrado para la opción''
Y ultimamente:
Estaba borrando todo de FrameWork Search Paths
+ Compile Resources
+ Run Script Phases
+ the pods y luego volví a instalarlos para finalmente encontrar el éxito.
El problema con mi tamaño (el día 2) fue un problema mayor con archivos o archivos en conflicto que Xcode no reconoció.
Pero en última instancia, eliminar todo (mencionado anteriormente y en los enlaces), limpiar muchas veces y volver a instalar las fases de pods / frameworks / run script ayudó.
Realmente espero que esto ayude a alguien.