Cuando intento ejecutar mi proyecto Xcode, falla con un error que indica que tengo símbolos duplicados. Busqué en línea dónde encontrar estos duplicados pero no tuve suerte:
Alguna idea de cómo solucionar este problema?
ios
objective-c
xcode
linker-errors
picciano
fuente
fuente
Respuestas:
A partir de los errores, parecería que FacebookSDK.framework ya incluye las clases Bolts.framework. Intente eliminar los Bolts.framework adicionales del proyecto.
fuente
Para mí, ayudó a cambiar la configuración del compilador "Sin bloques comunes" a NO: parece tener sentido, la configuración se explica aquí: ¿Para qué se usa GCC_NO_COMMON_BLOCKS?
fuente
Usando Xcode 8, la opción "Actualizar proyecto a la configuración recomendada" activó "Sin bloques comunes" para mi proyecto.
Volviéndolo a APAGADO arregló todo.
fuente
Para mí fue que importé un archivo como .m no .h por error
fuente
He estropeado mis pods al degradar un pod y he logrado resolver el problema con símbolos duplicados para la arquitectura arm64 quitando los pods e instalándolos nuevamente con:
fuente
Otra solución es:
Luego verá 1 o 2 archivos en el resultado de la búsqueda.
Elimina uno de ellos y vuelve a compilar . Debería volver a compilar ahora porque solo queda un archivo y no hay más conflictos para la compilación.
Si eso no funciona, es probable que el archivo tenga errores y debería eliminarlos todos y volver a compilarlos. Debería funcionar de nuevo.
fuente
Al actualizar a Xcode 8, recibí un mensaje para actualizar a la configuración recomendada. Acepté y todo se actualizó. Empecé a tener un problema de tiempo de compilación:
Símbolo duplicado para XXXX Símbolo duplicado para XXXX Símbolo duplicado para XXXX
Un total de 143 errores. Fue a Target-> Build settings -> No Common Blocks -> Configúrelo en NO. Esto resolvió el problema. El problema era que los proyectos integrados tenían bloques de código en común y, por lo tanto, no se podía compilar. La explicación se puede encontrar aquí .
fuente
Este error ocurre cuando Linker intenta vincular los archivos obj. Algunas razones en las que podría pensar para este error son:
La función / clase duplicada se define en dos lugares / archivos diferentes en el proyecto y se suponía que solo uno de ellos se compilaría para cualquier variación del comando de compilación. Pero de alguna manera ambos archivos se compilaron en su proyecto. Por lo tanto, debe verificar sus condiciones if-else u otras dependencias que agregan archivos src a la lista de archivos necesarios para compilar y eliminar el archivo no necesario para su comando de compilación particular.
La función / clase duplicada se define accidentalmente en dos lugares / archivos diferentes del proyecto. Elimina la definición incorrecta.
Limpie su directorio OBJ antes de volver a compilar, podría haber algunos archivos obj antiguos de sus compilaciones anteriores que podrían estar causando este conflicto.
PD: no soy un experto, pero así es como resolví este problema cuando lo enfrenté. :)
fuente
Si se está moviendo a Xcode 7 u 8 y está abriendo un proyecto realmente antiguo, me he encontrado con este problema:
en
SomeConstFile.h
en
SomeConstFile.m
Las versiones anteriores del compilador asumían que la definición en el archivo de encabezado era externa, por lo que incluir SomeConstFile.h por todas partes estaba bien.
Ahora necesita declarar explícitamente estos consts como extern:
en
SomeConstFile.h
fuente
Debajo del parche funciona para mí .. :)
¡Regresarlo a NO resolvió el problema!
fuente
Bueno, algunas veces cuando se usa SDK como FB o bibliotecas como Vuforia o GoogleAnalytics, agregar proyectos de muestra puede causar el problema de que ya incluyen Frameworks y así, por lo que debe asegurarse de no repetir los símbolos que agrega manualmente mientras ya están incluido en muestras
fuente
Para mí, el problema fue el estilo de creación de const, que funcionó bien hasta este iOS8 ... tenía algunas líneas como:
en mi archivo .h. Seis líneas como resultaron en 636 archivos enlazadores una vez que los bloques comunes se establecieron en NO. (14k + si la respuesta es SÍ). Se movieron las líneas a .m después de quitar .h de la declaración de valor y la compilación estuvo lista para comenzar.
¡Espero que esto ayude a otros!
fuente
En mi caso, la razón fue demasiado estúpida:
Tenía un archivo Constant.h donde tenía macros definidas. Pensé en hacer NSString allí. e hizo esto:
esto causó el problema de los símbolos duplicados para la arquitectura arm64 y el comando del vinculador falló con el código de salida 1. Eliminar la línea const NSString funcionó para mí.
fuente
verifique su archivo de inclusión, tuve este problema porque accidentalmente # importé "filename.m" en lugar de "filename.h", autocorrección (tab) puse una "m" y no una "h".
fuente
A partir de los errores, parecería que las Clases aparecen varias veces. Busque y elimine las Clases que funcionarán.
Estoy creando el archivo AppDelegate.hy .m creando varias veces. Entonces este error ocurrirá Finalmente, encuentre y elimine las clases que funcionan bien para mí.
fuente
para resolver este problema, vaya a las fases de compilación y busque archivos duplicados como (facebookSDK, unityads) y elimine (extensión file.o) y luego compile nuevamente.
fuente
Para mí, creé un método llamado
sampleMethod
en ViewController_A y también creé el mismo método en ViewController_B, me causó este error, luego cambié el nombre del método en ViewController_B asecondSampleMethod
. Solucionó el error.Parece una buena característica para reducir el código y no duplicar el mismo código en muchos lugares.
Intenté cambiar los bloques No Common de Sí a No y luego habilitar la capacidad de prueba de Sí a No. No funcionó. Revisé los archivos duplicados también en las fases de compilación, pero no hay archivos duplicados.
fuente
Obtuve este problema porque estaba definiendo perezosamente una variable en mi .m fuera de un método, luego en otro archivo .m estaba definiendo otra variable con el mismo nombre fuera de un método. Esto estaba provocando un problema de duplicación de nombre de variable global.
fuente
El problema para mí fue que había incluido manualmente un marco, pero luego también incluí ese mismo marco en CocoaPods sin saber que lo hice. Una vez que eliminé uno u otro, el problema desapareció
fuente
Consulte Error de símbolo duplicado al agregar la subclase NSManagedObject, enlace duplicado
fuente
Pude resolver este error que decía "158 símbolos duplicados para la arquitectura armv7, 158 símbolos duplicados para la arquitectura arm64" --- Si esto es lo que está obteniendo también, significa que está intentando compilar un archivo que está importando o heredar un marco o biblioteca estática que tiene referencias a código o archivos C ++. Una manera fácil de manejar esto sería cambiar la extensión de su archivo .m a .mm. Así es como se maneja si está usando Objective C, aunque no estoy seguro de Swift.
También en la configuración de su compilación, puede actualizar las "otras banderas del vinculador" a -lc ++
fuente
Si alguien está experimentando esto trabajando en Flutter, no intentes desintegrar pod, pod init.
Cómo lo resolví es ejecutar flutter clean, flutter run -d [Dispositivo iOS]
Hope puede ayudar a alguien.
fuente
Por favor cambie la configuración.
Paso 1: Vaya a OBJETIVOS -> Configuración de compilación -> Sin bloques comunes -> No
Paso 2: Vaya a TARGETS -> Build Settings -> enable testability -> No
fuente