Lorsque j'essaye de compiler avec Xcode, j'obtiens l'erreur suivante:
**Ld /Users/doronkatz/Library/Developer/Xcode/DerivedData/iKosher-bphnihrngmqtkqfgievrrumzmyce/Build/Products/Debug-iphonesimulator/iKosher.app/iKosher normal i386
cd /Users/doronkatz/Sites/xCode/iKosher
setenv MACOSX_DEPLOYMENT_TARGET 10.6
setenv PATH "/Xcode4/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Xcode4/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"
/Xcode4/Platforms/iPhoneSimulator.platform/Developer/usr/bin/gcc-4.2 -arch i386 -isysroot /Xcode4/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.2.sdk -L/Users/doronkatz/Library/Developer/Xcode/DerivedData/iKosher-bphnihrngmqtkqfgievrrumzmyce/Build/Products/Debug-iphonesimulator -L/Users/doronkatz/Sites/xCode/iKosher -F/Users/doronkatz/Library/Developer/Xcode/DerivedData/iKosher-bphnihrngmqtkqfgievrrumzmyce/Build/Products/Debug-iphonesimulator -filelist /Users/doronkatz/Library/Developer/Xcode/DerivedData/iKosher-bphnihrngmqtkqfgievrrumzmyce/Build/Intermediates/iKosher.build/Debug-iphonesimulator/iKosher.build/Objects-normal/i386/iKosher.LinkFileList -mmacosx-version-min=10.6 -all_load -ObjC -Xlinker -objc_abi_version -Xlinker 2 -lz -framework Security -framework CFNetwork -framework CoreData -framework Foundation -framework UIKit -framework CoreGraphics -framework QuartzCore -o /Users/doronkatz/Library/Developer/Xcode/DerivedData/iKosher-bphnihrngmqtkqfgievrrumzmyce/Build/Products/Debug-iphonesimulator/iKosher.app/iKosher
Undefined symbols for architecture i386:
"_UTTypeCreatePreferredIdentifierForTag", referenced from:
+[ASIHTTPRequest mimeTypeForFileAtPath:] in ASIHTTPRequest.o
"_UTTypeCopyPreferredTagWithClass", referenced from:
+[ASIHTTPRequest mimeTypeForFileAtPath:] in ASIHTTPRequest.o
"_kUTTagClassMIMEType", referenced from:
+[ASIHTTPRequest mimeTypeForFileAtPath:] in ASIHTTPRequest.o
"_kUTTagClassFilenameExtension", referenced from:
+[ASIHTTPRequest mimeTypeForFileAtPath:] in ASIHTTPRequest.o
"_SCNetworkReachabilitySetCallback", referenced from:
-[Reachability startNotifier] in Reachability.o
"_SCNetworkReachabilityScheduleWithRunLoop", referenced from:
-[Reachability startNotifier] in Reachability.o
"_SCNetworkReachabilityUnscheduleFromRunLoop", referenced from:
-[Reachability stopNotifier] in Reachability.o
"_SCNetworkReachabilityCreateWithName", referenced from:
+[Reachability reachabilityWithHostName:] in Reachability.o
"_SCNetworkReachabilityCreateWithAddress", referenced from:
+[Reachability reachabilityWithAddress:] in Reachability.o
"_SCNetworkReachabilityGetFlags", referenced from:
-[Reachability currentReachabilityStatus] in Reachability.o
-[Reachability isReachable] in Reachability.o
-[Reachability isConnectionRequired] in Reachability.o
-[Reachability isConnectionOnDemand] in Reachability.o
-[Reachability isInterventionRequired] in Reachability.o
-[Reachability isReachableViaWWAN] in Reachability.o
-[Reachability isReachableViaWiFi] in Reachability.o
...
ld: symbol(s) not found for architecture i386
collect2: ld returned 1 exit status**
Pas sûr de ce que ça signifie.
Je l'ai résolu en utilisant la méthode suivante (pour XCode 4):
1) Sélectionnez le projet dans la fenêtre de navigation du projet qui affichera le résumé du projet à droite
2) Sélectionnez les phases de création du 4e onglet
3) Sélectionnez Link binary with library option
4) Ajoutez le cadre pour lequel vous obtenez
5) Déplacez le cadre du dossier principal vers le dossier des cadres
6) Reconstruisez-le et les erreurs ont disparu.
la source
Le problème est que l'appartenance cible pour le fichier ajouté est manquante dans la cible de l'application. Sélectionnez donc le fichier et ajoutez la coche à la case d'appartenance cible
Par exemple, si l'erreur indiquée dans une définition de méthode en commun.
la source
J'ai pensé ajouter ma solution pour cela, après avoir passé quelques heures sur la même erreur :(
Les gars ci-dessus avaient raison de dire que la première chose à vérifier est de savoir si vous avez manqué d'ajouter des frameworks, voir les étapes fournies par Pruthvid ci-dessus.
Mon problème, il s'est avéré, était qu'une classe de compilation manquait après que je l'ai supprimée, et que je l'ai ensuite ajoutée à nouveau.
Vérifiez vos «sources de compilation» comme indiqué pour les classes d'erreur signalées. Ajoutez toutes les classes manquantes que vous avez créées.
la source
Assurez-vous que le framework manquant est bien répertorié sous "Target / Build Phases / Link Binary With Libraries" sinon ajoutez-le simplement. Comme mentionné précédemment, cela indique généralement un cadre manquant.
Dans mon projet, il y avait deux frameworks identiques répertoriés, lorsque j'ai supprimé l'un d'eux, j'ai eu cette erreur, car il l'a également supprimé de la liste "Link Binary With Libraries". J'ai rajouté et le problème a disparu (et j'ai toujours deux frameworks répertoriés)
la source
J'ai corrigé une erreur similaire sur mon projet en modifiant les paramètres de construction> Architectures pour TOUTES mes cibles.
Le problème: lorsque je suis passé de Xcode 4.4 à Xcode 4.5, mon projet s'est toujours bien compilé sur le simulateur mais ne s'est pas compilé sur les appareils. Sur les appareils, il a jeté l'erreur "symbole (s) introuvable pour l'architecture armv7s", ainsi que les trompeuses "Apple Mach-O Linker Error" et "clang: error: la commande de l'éditeur de liens a échoué avec le code de sortie 1 (utilisez -v pour voir l'invocation ). "
La cause (dans mon cas): mon projet avait plusieurs cibles, et même si les paramètres de construction> Architectures pour la cible principale ont été définis pour inclure l'architecture armv7s, la cible principale dépendait d'une autre cible (répertoriée sous Phases de construction> Dépendances), et Je n'avais pas pensé à réinitialiser les paramètres de construction> Architectures pour cette autre cible, et j'ai dû changer cela pour inclure armv7s. Je suppose que le simulateur et l'appareil fonctionnent sur des architectures différentes, et c'est pourquoi le simulateur fonctionnait bien alors que l'appareil ne l'était pas.
la source
Votre projet dépend-il d'un autre projet, et est-ce une cible de ce projet établie pour être une dépendance directe de votre cible principale? Si tel est le cas et que la dépendance n'est pas configurée, la cible dépendante peut ne pas être construite pour toutes les configurations (c'est-à-dire le simulateur)
Juste une supposition sauvage.
la source
Une autre situation qui peut provoquer ce problème est si votre code appelle en C ++ ou est appelé par du code C ++. J'ai eu un problème avec la fonction utilitaire de mon propre fichier .c apparaissant comme "symbole introuvable" lorsqu'elle est appelée depuis Obj-C. Le correctif consistait à changer le type de fichier: dans Xcode 4, utilisez le volet d'informations étendu pour définir le type de fichier sur "Source Objective-C ++"; dans Xcode 3, utilisez "Get Info" pour changer le type de fichier en "source.cpp.objcpp".
la source
Dans mon cas, aucune des solutions affichées n'a fonctionné. J'ai dû supprimer le projet et effectuer une nouvelle vérification à partir du serveur SVN . Heureusement, le projet était hébergé dans un système de contrôle de version. Je ne sais pas ce que je ferais autrement.
la source
Dans un projet C ++ utilisant une classe modèle définie , tout en recevant la même erreur, j'ai sélectionné le fichier .cpp avec la classe modèle définie dans le navigateur de projet, puis Supprimer> Supprimer la référence. Le fichier .h associé, tout en étant toujours référencé dans le projet, doit également avoir une instruction #include dans le .cpp comme suit:
Si vous voulez voir, un exemple de projet simple est sur github :
C'est un peu une supercherie d'indirection et je ne me souviens pas de la source originale de cette solution de contournement.
la source
Si cette erreur apparaît soudainement, cela signifie que le projet manque de cadres. Les bibliothèques et les projets dépendants peuvent nécessiter des frameworks, donc si vous en avez ajouté un récemment, cela peut provoquer cette erreur.
Pour ajouter des frameworks, cliquez avec le bouton droit sur le nom du projet dans la vue du projet, sélectionnez Ajouter, puis sélectionnez Existing frameworks dans la liste. Ensuite, trouvez le cadre avec les symboles qui vous manquent.
L'autre chose est que si vous avez ajouté des classes dans les ressources compilées et supprimé ces classes du projet, l'erreur apparaît. La meilleure chose à faire est de supprimer les classes des ressources de compilation (Paramètres de construction -> sources de compilation) qui ont été supprimées du projet.
Dans mon cas, j'ai ajouté les classes admob dans le projet et compilé le projet. Dans un cas ultérieur, je ne veux pas inclure admobs dans mon projet, j'ai donc supprimé les références des classes admob de mon projet. Lorsque cette erreur s'est produite, j'ai supprimé la classe .m de mon admob des ressources de compilation a résolu ce problème.
la source
Cela m'est arrivé en essayant de copier la bibliothèque de démonstration PSPDFKIT dans mon projet. J'ai suivi toutes les instructions du site + toutes les suggestions sur cette page .. pour une raison quelconque, il a continué à donner l'erreur ci-dessus, le problème était que si je greffais le message dans la méthode d'erreur .. il n'apparaissait que dans le binaire ( évidemment je n'ai pas accès au code source b / c je dois payer).
J'ai remarqué cela dans la page d'instructions:
Je suis donc allé aux tripes de ce fichier de configuration et j'ai trouvé ceci:
Ensuite, je suis allé à l'exemple de projet fourni par l'auteur de ladite bibliothèque .. et j'ai remarqué que les indicateurs précédents étaient copiés textuellement dans les autres indicateurs de l'éditeur de liens dans mes paramètres de construction .. mais dans mon projet .. ils ne l'étaient pas! .. Donc Je les ai simplement copiés et collés dans les paramètres de construction de mon projet, d'autres indicateurs de l'éditeur de liens et tout a fonctionné!
point à retenir: si vous comptez sur un fichier .xcconfig sur votre configuration, vérifiez avec un exemple de code source ou quelque chose et assurez-vous qu'il a bien été appliqué .. il n'a pas été appliqué correctement dans mon cas
la source
Une autre raison pour laquelle cela pourrait se produire est lorsque vous METTEZ À JOUR un SDK.
Si vous supprimez simplement le groupe, puis faites glisser et déposez le nouveau dossier dans le projet, le "Chemin de recherche de la bibliothèque" contiendra les deux SDK. Pour résoudre, supprimez simplement l'ancien chemin du SDK.
la source
J'avais utilisé un CLGeocoder sans ajouter un Framework Core.Location. Fondamentalement, cette erreur peut signifier plusieurs choses. J'espère que ça aidera quelqu'un d'autre.
la source
J'ai été déconcerté par celui-ci avant de réaliser que j'ai ajouté une @interface de données uniquement et que j'ai oublié d'ajouter le bloc @implementation vide.
la source
Je suis tombé sur ce problème dans Xcode 11, le correctif changeait la cible de déploiement minimum de 10,0 à 11,0, j'espère que cela aidera quelqu'un :)
la source