El comando del vinculador falló con el código de salida 1 (use -v para ver la invocación), Xcode 8, Swift 3


114

¡No puedo deshacerme de este error!

He intentado todo tipo de cosas, como borrar Datos Derivados (Preferencias-> Ubicaciones-> hacer clic en la flecha gris para abrir la carpeta Datos Derivados en Finder-> hacer clic derecho, mover a la papelera), limpiar el proyecto (CMD + Shift + K o Producto -> Limpiar), actualizando carthage y dependencias, verificó otras respuestas en StackOverflow (principalmente ajustes en Build Settings / Phases) y reclonó la aplicación desde github, etc.

El mismo proyecto funciona en las computadoras de mis colaboradores.

EDITAR: A partir de la respuesta actual mejor calificada, pude depurar un poco más ... Sin embargo, todavía no estoy seguro de cómo solucionarlo. ¿Parece que tengo algo en el proyecto dos veces? ¡Miré y no encontré nada apareciendo dos veces!

Aquí hay una imagen del registro:



¿Por qué aceptó la respuesta mejor calificada si no resolvió su problema ...?
benomatis

Respuestas:


160

Hoy me enfrentaba al mismo problema en xcode 8 versión 8.3.2

haga clic con el botón derecho en el problema -> revelar en el registro

ingrese la descripción de la imagen aquí

entonces puede verificar qué está causando ese problema

ingrese la descripción de la imagen aquí


¡Gracias por eso! Esto es lo que obtengo en el registro: imgur.com/vFkNJzZ
Jake Dobson

Finalmente resolví esto. ¡Me ayudaste a guiarme en la dirección correcta! Realmente apestaba que Xcode no revelara el registro al hacer clic en ... ¡Podría haberme ahorrado algo de tiempo!
Jake Dobson

Gracias por la sugerencia Revelar en registro. No sabía que podía usarlo
KarenAnne

1
@GhasemTabatabaei Verifique mi respuesta a continuación
Jake Dobson

81
¿Por qué es esta la respuesta aceptada? En realidad, no responde a la pregunta, solo ayuda potencialmente a llegar a la solución.
Tom Oakley

116

Tal vez instaló un archivo de pod y todavía está intentando compilar a partir del .xcodeprojarchivo en lugar de.xcworkspace


4
No, utilicé Carthage por esa razón. Sin embargo, esa es una respuesta legítima que podría ayudar a otras personas con este mismo error.
Jake Dobson

1
Agregué el código m $ AppCenter a un proyecto existente y necesitaba Pods. No tenía idea de lo que estaba pasando y lo había estado haciendo con el .xcodeprojdurante más de un año ... ¡Algo así de simple!
Dennis Smolek

1
Mi solución estaba algo relacionada con esto. Recientemente había actualizado algunas dependencias y el proyecto ahora usaba CocoaPods. Anteriormente, siempre estaba trabajando desde el archivo del proyecto. Abrí el archivo del espacio de trabajo, que tenía mi proyecto y Pods, y todo funcionó bien.
Rozgonyi

40

lo único que funcionó para mí fue correr pod deintegrateypod install


La pregunta ha sido respondida. Si ve mi comentario a continuación, había importado un archivo que ya se había importado a ese archivo. El proyecto estaba en una condición de carrera al intentar hacer referencia al archivo dos veces.
Jake Dobson

ok, sí, pero no funcionó para mí y cuando lo busqué en Google, esto es lo que surgió, así que pensé en intentar ayudar a alguien más ... soy nuevo en esto, ¿debo eliminar mi respuesta?
Charles Harring

Supongo que no, ya que ya está ahí. Estoy seguro de que a alguien le resultará útil. La aplicación que estaba usando no usaba cocoapods. El caso es que este error es muy común y da poca información sobre sí mismo. Se pueden encontrar tantas soluciones, dependiendo de cada proyecto.
Jake Dobson

¡Me salva el día! ¡Dios te bendiga!
user2612604

19

¿Intentaste una limpieza? cmd + shift + k


8
¡Oh, sí ... muchas veces!
Jake Dobson

Eso es, literalmente, todo lo que obtengo ... Hacer clic en el texto no me envía a ninguna información adicional o la ubicación del archivo donde sucedió, como ocurre con la mayoría de los errores. Nada en la consola, nunca llega a ejecutar la aplicación debido a este error ..
Jake Dobson

FWIW, encontré este problema recientemente al compilar con un SDK y la sugerencia de @ FranciscoPerez funcionó. Definitivamente lo recomiendo como primer paso antes de profundizar demasiado en la depuración.
riastrad

9

Bien ... Así que esto es lo que resolvió mi problema ...

en el archivo delegado de la aplicación:

#import "AppDelegate.h"
#import "DarkSkyAPI.h"
//#import "Credentials.h"

Ya había importado Credentials.h en el archivo DarkSkyAPI.m en mi proyecto. ¡Al comentar la importación adicional, el error desapareció!

Algunas cosas para mencionar y tal vez ayudar a alguien en el futuro. La respuesta de @ umairqureshi_6 me ayudó en el proceso, pero no lo resolvió. Me llevó a donde pude buscar la información. Seguí viendo los archivos AppDelegate y DarkSkyAPI apareciendo en el registro de errores y la información que estaba extrayendo del archivo Credentials estaba causando el error. Sabía que tenía que estar en uno de estos 3 archivos, así que inmediatamente verifiqué las importaciones, porque recordé haber escuchado que el .h lleva todas las importaciones de su archivo .m. ¡Auge!


6

Sé que la pregunta ya ha sido respondida. Pero si esto ayuda a alguien a ahorrar algo de tiempo: tuve el mismo error. Revisé todo para encontrar un error muy pequeño y estúpido de mi parte. Importé un archivo personalizado ManagedObject de datos centrales en un controlador de vista de mi proyecto. Importé accidentalmente el archivo .m en lugar del archivo .h que estaba causando el símbolo duplicado en el error de arquitectura (el comando del vinculador falló) porque mi archivo .m de la clase de propiedades importa el archivo .h de la clase de datos principales y, por lo tanto, causa una importación duplicada.

¡Así que compruebe si ha importado los archivos correctos antes de probar varias soluciones!


¡Si! Esto fue muy similar a mi problema. Tuve el mismo archivo importado dos veces en mi proyecto. Más bien, importé un "fileA.h" a "fileB.h", pero luego importé "fileA.h" y "fileB.h" a "fileC.h", o algo por el estilo ... Así que la aplicación se bloquea porque no sabe cuál usar. ¡Definitivamente un buen lugar para tener un recordatorio para que otros verifiquen sus importaciones de archivos!
Jake Dobson

6

Arriba se mencionan muchas soluciones. Nadie trabajó para mí (pero primero intente arriba).

Seleccione Proyecto -> Seleccionar destino -> Marco y bibliotecas vinculados -> Agregar todas las bibliotecas de pod. (eliminar si existen en binarios incrustados)

Ahora elimínelos de la carpeta Framework en el explorador de archivos izquierdo de xcode.

Esto resolvió mi problema.


4

Seleccione el proyecto-> Fase de compilación-> Vincular binario con bibliotecas y agregue todas las bibliotecas de pod.


3

Tuve el mismo problema al usar Carthage para las dependencias.

Simplemente vaya a Seleccionar proyecto -> Configuración de compilación -> Buscar habilitar código de bits -> Si está seleccionado en Sí, seleccione No.

Eso me resolvió este problema.


2

Tuve el mismo problema.

La causa fue que declaré la misma variable global en 2 archivos . Entonces mostraba el mismo error diciendo 2 símbolos duplicados .

La solución fue eliminar esas variables.


1
¿Por qué eliminó ambos y no solo uno?
Jake Dobson

2

Para cualquiera que tenga este problema con el marco Flurry. Esto es lo que solucionó mi problema. Para mí, el problema era que había importado los siguientes archivos pero nunca los usé. "libFlurryTVOS_9.2.3" "libFlurryWatch_9.2.3"

Así que todo lo que tuve que hacer fue ir a la configuración de destino del proyecto y eliminar estos 2 archivos de la sección "Marco vinculado y bibliotecas" y el problema se resolvió.


2

En mi caso, el motivo del error es la biblioteca que se vinculó dos veces.

Lo uso react-nativepara que se vincule automáticamente usando react-native linky manualmente en xcode.


2

Asegúrese de que la Find Implicit Dependenciescasilla de verificación esté marcada.

(Producto -> Esquema -> Editar esquema -> Generar -> Buscar dependencias implícitas)


2

Estaba probando el marco Sparkle con CocoaPods.

Lamentablemente, puse pod 'Sparkle', '~> 1.21'PodFile en el lugar equivocado. Lo puse debajo de Pruebas (para pruebas unitarias).

Una vez colocado en el lugar correcto en PodFile, todo está bien.


1

¡Solo tenía que hacer import Foundation!

¡Estaba usando Kitura para el lado del servidor Swift y seguía olvidándome de esto!


Decir ah. Sí, ¡siempre necesitará al menos importar Foundation antes de hacer cualquier cosa! Por lo general, importo UIKit en lugar de Foundation, porque casi siempre necesitaré usar características de UIKit y UIKit hereda todo de Foundation para ti. Las importaciones con Objc pueden ser bastante complicadas, pero ¿parece que estabas usando Swift?
Jake Dobson

Sí, estaba usando Swift, el archivo en cuestión no mostraba ningún problema con el compilador, pero solo durante la ejecución del archivo, ¡encontré este problema!
Miel

1
Sí, no creo que realmente compruebe eso hasta el tiempo de ejecución, podría estar equivocado. Pero, parece que no tendría ningún problema hasta que intentara acceder a algo de Foundation, no pudo encontrar la importación y luego no pudo continuar el proceso: ¡falla!
Jake Dobson

1

Aquí está mi problema y solución:

Eliminé dos archivos del código fuente usando el árbol de fuentes (controlador de versión). Después de aplicar el diff, que contiene las dos clases que eliminé, Xcode no lo agregó automáticamente. Entonces obtuve un error de vinculador.

Agregué manualmente los archivos, haciendo clic derecho en el nombre del grupo y seleccione "Agregar archivos a". Ahora mi error se resolvió.

Si alguien se enfrentó al error del vinculador con respecto al archivo de clase, intente agregarlo manualmente.


1
Definitivamente parece un problema de archivo que están tratando de insinuar ... Los archivos de otros lugares que no recuperan información entre sí parecen encontrarse comúnmente en esta página. Gracias por su respuesta. ¡Espero que ayude a alguien en el futuro!
Jake Dobson

1

No tuve este problema cuando construí y ejecuté mi propio dispositivo. Solo tuve este problema con los simuladores. Simplemente reinicié mi computadora y la ejecuté. Funcionó.


1

En mi caso, he cambiado el Targetnombre en mi, por Podfilelo que se crea el mismo error para mí.

Solución

Simplemente vaya a project-> Build Phase->Link Binary with librariesEliminar lo antiguo FrameWorkshaciendo clic en minus button(-)Y limpiar y ejecutar nuevamente. Es trabajo para mí.

ingrese la descripción de la imagen aquí

Eliminar no deseados .framework.


1

Las otras respuestas no me funcionaron, así que aquí comparto mi solución en caso de que pueda ayudar a alguien más:

Mi problema fue que estaba configurando el Podfile de mi XCode-Project para la plataforma incorrecta. Cambiar "plataforma: ios" al comienzo de mi Podfile a "plataforma: macos" funcionó para deshacerme del error.


0

Yo tuve el mismo problema. Si está revisando cualquier proyecto de github, entonces en lugar de usar git clone, use git lfs clone, ya que a veces, algunos archivos grandes no se clonan correctamente usando solo git. Además, asegúrese de que su código de bits esté desactivado.


buena nota ... pero normalmente la consola te avisará que algunos archivos son demasiado grandes para transferirlos.
Jake Dobson

0

Para mí, el archivo de bloqueo de gemas especificaba una versión anterior de cocoapods que la que había instalado. Tuve que volver a ramificarme y correr en bundle exec pod installlugar depod install


0

Parece que el problema es diferente para la mayoría de nosotros y el mensaje de error tiene información decente. En mi caso, el Deployment Target se estableció en 10.13la export MACOSX_DEPLOYMENT_TARGET=10.13línea, pero yo estaba corriendo 10.14. Así que tuve que cambiar mi destino de implementación a 10.14en General> Información de implementación para que los símbolos relacionados con ITLibrary volvieran a estar disponibles.

cd /Users/foo/src/scrobble/macos/itunes-scrobble
    export MACOSX_DEPLOYMENT_TARGET=10.13

... SNIP ...

Undefined symbols for architecture x86_64:
  "_OBJC_CLASS_$_ITLibMediaItem", referenced from:
      objc-class-ref in AppDelegate.o
  "_OBJC_CLASS_$_ITLibPlaylist", referenced from:
      objc-class-ref in AppDelegate.o
  "_OBJC_CLASS_$_ITLibrary", referenced from:
      objc-class-ref in AppDelegate.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

0

En mi caso, estaba produciendo varios productos del mismo proyecto. Para uno de los productos, el main.marchivo importó un archivo de encabezado de otra carpeta del mismo proyecto. Pero ese archivo no se incluyó en "Fuentes cumplidas" en "Fase de compilación". Esto provocó un error del vinculador.

Después de comparar cuidadosamente la configuración de "Fases de compilación" para un producto que podría construirse con éxito, me di cuenta de que el .marchivo del encabezado debe incluirse en la lista de "Fuente compilada". Mi problema se resolvió después de agregar ese archivo. Adjuntar una imagen para mayor claridad. Se tuvo que agregar el archivo resaltado.

ingrese la descripción de la imagen aquí


-1

Tuve los mismos problemas al hacer una compilación del proyecto Ionic 1.

Pude resolver el problema después de eliminar el archivo CDVLogger.hy CDVLogger.m


¿Parece que nunca necesitó esos archivos en primer lugar? Debe haber estado solicitando archivos en esos y otros archivos también, confundiendo el proyecto e impidiendo que se ejecute.
Jake Dobson

-4

Ok, tuve el mismo problema hoy y comencé a buscarlo en Google, cuando encontré este hilo. No he terminado de leer la pregunta cuando se me ocurrió la respuesta: declaré una clase con un constructor vacío

class MyClass{
    MyClass();

    void func_one(){
    // code
    }

    void func_two(){
    // code
    }

    ~MyClass(){
        cout << "Deleting object" << endl;
     }
};

Luego pensé por qué no terminar (no estoy seguro de si estoy en lo cierto con la selección de palabras aquí, pero a quién le importa) el constructor de mi clase con llaves ( {}). Así que lo hice:

class MyClass{
    MyClass(){}

    void func_one(){
    // code
    }

    void func_two(){
    // code
    }

    ~MyClass(){
        cout << "Deleting object" << endl;
     }
};

El problema eliminado, mi código comenzó a funcionar perfectamente.

Lo sé, la buena práctica es investigar el problema y encontrar la causa real, pero esto funcionó para mí.


No creo que esto sea útil para este hilo ... Parece que el error es intentar solucionar un problema de archivo, como importar lo mismo en archivos separados. Me parece extraño que obtenga este error, porque este es un error específico de Objective-C ...
Jake Dobson

También recibí este error en C ++. El error del vinculador en su caso probablemente fue que el vinculador no pudo encontrar el código para su constructor. Tuve un error similar con una función que cambié de nombre, pero debido a que Xcode 10 no abriría el registro del vinculador por sí solo, y no sabía que podía hacer clic con el botón derecho y "revelar en el registro", me quedé perplejo por algunos minutos intentando localizar el error.
Matt Parkins
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.