web-dev-qa-db-fra.com

La commande/développeur/usr/bin/clang a échoué avec le code de sortie 1

J'essayais de créer une application Mac Objective-C simple avec Xcode pour garder le score de deux joueurs jouant dans un jeu simple avec un maximum de 36 scores par joueur. Ce n'est pas une application très pratique à cause de ses fonctionnalités limitées, et c'est surtout pour la pratique. J'essayais de développer un peu l'application avec une fenêtre Préférences, qui s'ouvrirait lorsqu'un élément de menu était cliqué.

J'ai créé un fichier pour contrôler l'élément hommes, puis une pointe à afficher lorsque l'utilisateur clique dessus. Tout cela a bien fonctionné et une nouvelle fenêtre s'ouvrirait. Je mets des curseurs, des champs de texte, etc. sur la pointe et les connecte à des actions. Tout cela a bien fonctionné.

Le problème est venu lorsque j'ai essayé d'importer les fichiers dans mon contrôleur racine afin de pouvoir utiliser les choix de l'utilisateur dans l'application.

J'ai eu l'erreur suivante du compilateur:

Command /Developer/usr/bin/clang failed with exit code 1

Avec tout cela:

Ld "/Users/myusername/Library/Developer/Xcode/DemivedData/SimpleKeeper_Mac-bjvjeiybvmwffppfpfpdpwdvlp .____.] cd "/Users/nom_utilisateur/Dropbox/iphone app/SimpleScoreKeeper Mac" setenv MACOSX_DEPLOYMENT_TARGET 10.6 /Développeur/usr/bin/clang-arch x86_64-isysroot /Developer/SDKs/MacOSX10.6.sdk -L/Utilisateurs/myusername/Bibliothèque/Développeur/Xcode/DerivedData/SimpleScoreKeeper_Mac-bjvjeiybvmwfjpfilvnpezarwkml/Build/Products/Debug F/Utilisateurs/myusername/Library/Developer/Xcode/DerivedData/SimpleScoreKeeper_Mac-bjvjeiybvmwfjpfilvnpezarwkml/Build/Products/Debug -Filelist "/ Utilisateurs/monusername/Library/Developer/XDKD -bjvjeiybvmwfjpfilvnpezarwkml/Build/Intermediates/SimpleScoreKeeper Mac.build/Debug/SimpleScoreKeeper Mac.build/Objects-normal/x86_64/SimpleS coreKeeper Mac.LinkFileList " -mmacosx-version-min = 10.6 -fichier Cocoa -o "/Utilisateurs/monusername/Bibliothèque/Développeur/Xcode/DerivedData/SimpleScoreKeeper_Mac-bjvjeiybvmwfjvfvvvvv/v/d Debug/SimpleScoreKeeper Mac.app/Contents/MacOS/SimpleScoreKeeper Mac "

ld: symbole en double _addScores in /Users/nom_utilisateur/Library/Developer/Xcode/DerivedData/SimpleScoreKeeper_Mac-service de stockage de disque dur La composition de Mac.build/Objects-normal/x86_64/Prefrences.o, à la manière suivante: Debug/SimpleScoreKeeper Mac.build/Objects-normal/x86_64/RootController.o pour l'architecture X86_64 clang: erreur: la commande de l'éditeur de liens a échoué avec le code de sortie 1 (utilisez -v pour . voir invocation) La commande/développeur/usr/bin/clang a échoué avec le code de sortie 1

Les fichiers (éventuellement) liés de mon projet suivent.

RootController.h - All the interface declarations for stuff in the MainMenu.xib window
RootController.m - Where I need to import the files to
MainMenu.xib - The nib owned by the RootController class
Preferences.h - A file I'd want to import, but it won't work.
Preferences.m - A file I'd (maybe) want to import, but it won't work.
Preferences.xib - The nib owned by the Preferences class.
PreferencesMenuController.h - Where I declare the clickPreferences action. (Liked to MainMenu.xib)
PreferencesMenuController.m - Where I say that clickPreferences opens up Preferences nib.  (Linked to MainMenu.xib)

Y a-t-il une raison pour laquelle j'aurais cette erreur? Y a-t-il quelque chose que je dois faire dans la classe que j'importe? S'il vous plaît soyez assez détaillé, je suis nouveau dans la langue ne sais pas comment faire certaines choses. Et s'il y a quelque chose que j'ai besoin de clarifier, faites le moi savoir.

EDIT: Voici le code du fichier que je ne peux pas importer.

#import "Preferences.h"

@implementation Preferences

int addScores;

- (IBAction)addScoresToggled
{
    NSLog(@"addScores was toggled.");
}


- (id)initWithWindow:(NSWindow *)window
{
    self = [super initWithWindow:window];
    if (self) {

    }

    return self;
}

- (void)dealloc
{
    [super dealloc];
}

- (void)windowDidLoad
{
    [super windowDidLoad];
}

@end
10

Vous pouvez également obtenir cette erreur si vous incluez accidentellement le fichier d'implémentation plutôt que le fichier d'en-tête. par exemple. #import "MyClass.m" au lieu de #import "MyClass.h"

17
user263865

C'est la raison ld: duplicate symbol _addScore

Dans votre projet, vous avez le fichier _addScore plusieurs fois. vérifiez la hiérarchie de votre projet.

9
Ishu

Après avoir reçu exactement la même erreur, j'ai remarqué que j'avais en quelque sorte deux fichiers .h portant le même nom dans mon projet. Supprimer le doublon du dossier du projet (pas seulement supprimer la référence) a résolu le problème pour moi.

3
lreichold

J'ai rencontré ce problème tout à l'heure parce que j'avais importé accidentellement le fichier .m pour une classe au lieu du fichier .h.

Pour tous ceux qui essaient cette réponse: Si le problème est apparu soudainement, réfléchissez aux lignes #import que vous avez ajoutées récemment (ou mieux encore, lancez un grep dans git!).

2
Stecman

select demo.xcodeproj , afficher le contenu du paquet supprimer le fichier nommé project.xcworkspace et le f xcuserdata

1
logger

ma solution:

J'ai été importé des fichiers .h et .m dans mon projet. mais je n'ai utilisé aucune de mes classes. J'ai donc supprimé celles du Finder. cela a causé l'erreur ci-dessus.

je devais donc aller dans les phases de configuration/construction du projet => puis aussi supprimer ces références de fichiers. ils étaient de couleur rouge. car ils ont été supprimés du Finder et non de Xcode 

0
Hashem Aboonajmi

Je faisais face à la même erreur en utilisant RestKit. J'ai sélectionné la cible RestKit et l'ai nettoyée/construite. puis j'ai sélectionné ma cible principale (mon application) et l'ai nettoyée/construite. cela l'a réparé pour moi.

0
user83950

Fichiers d'en-tête ou d'implémentation DUPLICATE ou AMBIGUOUS

Cela peut se produire lorsqu'il existe plusieurs chemins d'accès possibles aux fichiers que vous importez. Par exemple, si vous importez MyClass.h, mais qu'il existe deux instances de MyClass.h dans votre projet.

0
Alex V

J'ai rencontré cette erreur lorsque j'ai accidentellement cliqué sur Produit -> Test au lieu de Produit -> Exécuter. Je viens de nettoyer le projet en cliquant sur Produit -> Nettoyer et l'erreur a disparu.

0
Haris ur Rehman

Je suis récemment tombé sur cette erreur. Importez-vous le même fichier .h à partir de deux fichiers différents? Cela a causé cette erreur pour moi.

0
Deco

Si vous souhaitez que la variable addScore soit accessible dans plusieurs fichiers, vous devez la définir dans un fichier .m comme suit:

int addScore;

et déclarez-le dans le fichier .h associé en tant que:

extern int addScore;

Si le mot-clé "extern" est omis dans la déclaration, le compilateur voit cela comme une redéfinition de addScore dans chaque fichier dans lequel le fichier .h est importé/inclus. Cela conduirait à l'erreur que vous voyez.

0
fishinear

J'ai eu le même problème après avoir exécuté deux projets avec les mêmes identificateurs d'application.

Après la suppression (remplacez <votrelogine> par votre nom de compte):

project.xcworkspace/xcuserdata/<yourlogin>.xcuserdatad/UserInterfaceState.xcuserstate

il a commencé à fonctionner sous simulateur mais pas encore sur l'appareil, alors j'ai fermé tous les projets ouverts, en ai créé un nouveau et y ai copié des fichiers, et finalement cela a fonctionné!

0
Ad1905

Je rencontre ce genre d'erreur lorsque j'archive un projet sous Xcode 4.3 et 4.4, Et finalement, j'ai fini par l'erreur en passant de la norme (Intel 32/64 bits) à l'Intel 64 bits

0
Jiulong Zhao

J'avais une cause différente: avec Xcode 4.4, la cible de déploiement était définie à 10.4 alors que le minimum était de 10.6. Cela a résolu pour moi.

0
Alex