web-dev-qa-db-fra.com

Apple Mach-O Linker & Ditto Error - Xcode 8

Je viens de mettre à jour mon Xcode vers Xcode 8 et j'essaie maintenant de convertir le code de mon projet en Swift 2.3. J'ai été capable de construire plusieurs fois en utilisant Xcode 8 sans aucune erreur. Maintenant, les erreurs suivantes se sont produites:

Erreur n ° 1: Erreur du lieur Apple Mach-O: la commande du lieur a échoué avec le code de sortie 1

ld: fichier introuvable: /Users/Linus/Library/Developer/Xcode/DerivedData/MyApp- asdjeshhsetnfxbegcsbcipdreneewgr/Build/Intermediates/MyApp.build/Debug-iphonimulator/MyApp.html
clang: erreur: la commande de l'éditeur de liens a échoué avec le code de sortie 1 (utilisez -v pour voir l'invocation)

Je ne sais même pas ce qu'est un fichier .o. Le fichier Swift de DownloadsViewController est cependant là.

Erreur n ° 2: Erreur Ditto: la commande/usr/cin/ditto a échoué avec le code de sortie 1

idem: ne peut pas obtenir le vrai chemin pour la source '/Users/Linus/Library/Developer/Xcode/DerivedData/MyApp-asdjeshhsetxfbbciegrfdreneewgr MyApp-Swift.h '
La commande/usr/bin/ditto a échoué avec le code de sortie 1

L'erreur idem se produit 3 fois: pour MyApp.swiftdoc, MyApp.swiftmodule et MyApp-Swift.h.

Merci d'avance!

17
LinusGeffarth

METTRE À JOUR

Comme par magie, Xcode a décidé de réparer les erreurs lui-même. Mon projet s'exécute à nouveau, sans aucune erreur.
Je n'ai rien fait qui résout cette erreur.

5
LinusGeffarth
  1. Quitter Xcode
  2. Redémarrer le système 
  3. Sélectionnez Xcode -> Préférences. 
    Cela ouvrira une fenêtre pop-up. Sélectionnez "Emplacements". Dans Emplacements, vous verrez «Données dérivées». Cliquez sur l'icône de flèche juste à côté du chemin.
    Cela ouvrira un dossier contenant «Données dérivées», supprimez-le.
  4. Nettoyer le produit et courir 
41
RakeshDipuna

Assurez-vous d’ouvrir le projet à partir du fichier .xcworkspace au lieu du .xcodeproj.

27
Agu Dondo

étape 1 = cliquer sur le projet dans le menu de navigation

étape 2 = sélectionner le projet

étape 3 = paramètres de construction 

étape 4 = rechercher l'activation du code binaire si le code binaire est oui, puis passer à non 

17
Parth Changela

Aucune des réponses précédentes n'a résolu mon problème ... Je pense que cela vient des modifications apportées au podFile des cocotiers, de l'utilisation de frameworks pour ne pas les utiliser 

Les cadres étaient toujours rappelés dans Cible> Propriétés générales> Cadres liés. Je les ai supprimés J'ai également supprimé le cadre -framework et les cadres correspondants des autres indicateurs de l'éditeur de liens (enregistrement des indicateurs hérités et objC).

J'espère que cela pourrait aider

9
Romain TAILLANDIER

Cela m'est arrivé après que j'ai supprimé mon application alors qu'elle était en cours d'exécution.

Je l'ai résolu en nettoyant le projet.

Produit> Nettoyer ou Maj + Commande + K

5
calosth

En effet, certains fichiers de projet n’ont pas été compilés à un moment donné. Dans mon cas, le AppDelegate.Swift n'était pas dans le compilateur. Alors je l'ai ajouté manuellement et cela a fonctionné.

 enter image description here

4
Ewerson

Nettoyer le XCode avec les cmds suivants et reconstruire:

rm -rf ~/Library/Developer/Xcode/DerivedData/
killall Xcode 2> /dev/null
killall Instruments 2> /dev/null
killall 'iOS Simulator' 2> /dev/null
killall Simulator 2> /dev/null
killall 'Simulator (Watch)' 2> /dev/null
killall ibtoold 2> /dev/null
killall simctl 2> /dev/null
# There may be others
# Kill the service itself
Sudo killall -9 com.Apple.CoreSimulator.CoreSimulatorService
rm -rf ~/Library/*/CoreSimulator
1
Shijing Lv

Pour mon application native react, j'ai supprimé le dossier d'un projet test enProject Navigator et Targets. Cela a résolu mon problème.

1
aolmez

Régler Bitcode sur "Non" a résolu ce problème. Cela se trouve dans les paramètres de construction.

1
PiKa

Si vous importez une structure via Build Phases, essayez de la placer dans le dossier de votre projet et ajoutez-la dans Link Binary with libraries. En fait, j’ai déjà rencontré ce problème auparavant, je suis très frustré par cette erreur jusqu’à ce que je sache que je dois placer le .framework dans le dossier de mon projet. 

1
vidalbenjoe

Ne vous inquiétez pas, allez simplement dans la cible de votre projet, puis définissez les paramètres et recherchez le code binaire activé pour le changer en OUI en NON.

1
Sandip Mahajan

J'ai eu le même problème lorsque j'ai remplacé Xcode d'une version précédente 7 par le nouveau XCode 8. Dans le nouveau Xcode (8.3.3 maintenant), le compilateur contient davantage de paramètres. 

Lorsque vous mettez à jour les paramètres du projet dans le nouveau Xcode (à l'aide de Editor-> Valider les paramètres), ces nouveaux paramètres sont appliqués et définis à la valeur par défaut YES. Après cette mise à jour, j'ai eu l'erreur de l'éditeur de liens!

Dans mon projet, j'ai comparé la version précédente du fichier .pbxproj avec la nouvelle (après validation des paramètres) en utilisant Beyond compar (ou similaire).

De cette façon, je peux voir les nouveaux paramètres ajoutés dans la nouvelle version de Xcode et définir la nouvelle valeur des paramètres sur NO. Après cette mise à jour, tout était OK et l'erreur de l'éditeur de liens a disparu.

1
Lorenzo

Pour moi, c'était un problème de réactivité haptique native. Je pense que c'était à cause d'un changement dans CocoaPods mais aussi à cause de la modification de l'emplacement des fichiers. Je viens de le retirer et de le réinstaller. J'espère que ça aide quelqu'un.

METTRE À JOUR

La construction a réussi en l'exécutant, elle plantait juste. Pour résoudre ce problème, j'ai utilisé Fichier> Ajouter des fichiers au projet pour GoogleService-Info.plist et cela a fonctionné.

0
JeremyF

En plus du nettoyage des données dérivées et du projet, ainsi que du redémarrage de xcode, j'ai constaté que la conversion de votre projet en syntaxe Swift actuelle et la réinstallation de pods, le cas échéant, sont également utiles.

Pour reconvertir votre projet, vous devez redéfinir le paramètre de génération Swift_version sur yes afin que votre cible apparaisse dans la liste de conversion.

0
Chris Mitchelmore

J'ai eu le même problème parce que j'avais défini une classe (en utilisant @interface), mais je n'ai pas fourni d'implémentation (avec @implementation). C'était une classe simple, donc même une implémentation vide la résolvait.

0
CSawy

Problème rencontré avec XCode 8.2.1 (version 8C1002) après la conversion du projet en syntaxe Swift actuelle (Swift 3). Je devais juste le reconstruire après le nettoyage, et les erreurs ont disparu.

0
Darius Miliauskas

Si la procédure de nettoyage et de désactivation du bitcode ne fonctionne pas, il est possible que la raison de ces erreurs soit simplement une erreur de syntaxe plus complexe dans votre code.

0
Rainer Niemann

Vérifiez également que vous importez un fichier d’implémentation "* .m" dans l’une de vos classes, ce qui peut entraîner le même problème. 

Supprimer la déclaration d'importation peut résoudre le problème

0
CaptainBluMagic