symbole(s) ne se trouvent pas pour l'architecture i386
Lorsque vous essayez 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 qu'il signifie.
Vous devez vous connecter pour publier un commentaire.
Vous utilisez ASIHTTPRequest donc, vous avez besoin pour l'installation de votre projet. Lire la deuxième partie ici
https://allseeing-i.com/ASIHTTPRequest/Setup-instructions
Si vous obtenez ce genre de chose apparaissant soudainement, cela signifie généralement que le projet est manquer de certains cadres dont il a besoin. Les bibliothèques et les projets dépendants peut exiger des cadres, donc si vous avez ajouté un récemment alors que peut provoquer cette erreur.
Pour ajouter des cadres, cliquez-droit sur le nom du projet dans la vue projet, sélectionnez
Add
, puis sélectionnezExisting frameworks...
à partir de la liste. Ensuite, trouver le cadre avec les symboles que vous avez manqué.Comment vous trouver de cadres vous avez besoin, je l'ai trouvé à l'aide de google, le plus simple, si vous pourriez probablement utiliser Xcode recherche de l'aide aussi. Recherche pour l'un des symboles, faites de votre mieux pour travailler sur les unmangled nom (par exemple,
SCNetworkReachabilityGetFlags
), puis sur le premier lien de la documentation, vous trouverez à l'developer.apple.com est souvent la bonne. Vous n'avez généralement pas à chercher très loin. Dans ce cas, c'est cette page:https://developer.apple.com/documentation/systemconfiguration/scnetworkreachability-g7d
Puis en haut de la page, il vous dit d'utiliser le framework,
SystemConfiguration
dans ce cas. Afin de l'ajouter au projet, et de compiler à nouveau.Puis continuez à faire cela jusqu'à ce qu'il fonctionne...
Edit: je n'ai jamais utilisé le simulateur, mais c'est ce que vous faites sur l'appareil - je suppose que c'est la même chose...
Parfois il y a des fichiers sources qui sont absentes de votre cible.
Vous pouvez sélectionner les fichiers qui semblent être des "disparus" et cochez la case à droite de la barre d'utilitaires que leurs cases sont sélectionnés pour la Cible que vous construisez.
Je l'ai résolu en utilisant la méthode suivante (pour XCode 4):
1) Sélectionnez le projet dans le projet de navigation de la fenêtre qui affichera résumé du projet sur le droit
2) Sélectionnez le 4ème onglet phases de construction
3) Sélectionnez le Lien binaire de la bibliothèque à l'option
4) Ajouter un cadre pour laquelle vous obtenez des
5) Déplacer le cadre de dossier principal pour le dossier frameworks
6) Construire à nouveau et les erreurs ont disparu.
Le problème est que la cible d'adhésion pour l'ajout déposés manque de l'application cible .Afin de sélectionner le fichier et ajouter la coche de la case de la cible d'adhésion
Par exemple, si l'erreur affiché dans une définition de méthode en commun.m
Pensé à ajouter ma solution pour ce faire, après avoir passé quelques heures sur la même erreur 🙁
Le gars ci-dessus ont été correcte que la première chose à vérifier est de savoir si vous aviez manqué l'ajout des cadres, voir les étapes fournies par Pruthvid ci-dessus.
Mon problème, il s'est avéré, était une compilation de la classe manquante après je l'ai supprimé, et plus tard ajouté ça à nouveau.
Vérifier votre "Compiler des Sources", comme indiqué pour les classes d'erreur. Ajouter dans toutes les classes manquantes que vous avez créé.
Assurez-vous que le manque de cadre est effectivement répertoriés sous "Target/Phases de construction/Lien Binaire Avec les Bibliothèques" si non il suffit de l'ajouter. Comme mentionné avant cela indique généralement un manque de cadre.
Dans mon projet, il y avait deux identiques cadre répertoriés, quand j'ai enlevé l'un d'eux, j'ai eu cette erreur, car il a aussi supprimé, il forme le "Lien Binaire Avec les Bibliothèques" à la liste.
J'ai ajouté le dos et le problème a disparu (et j'ai encore deux cadres de la liste)
J'ai corrigé une erreur similaire sur mon projet par la modification de la Paramètres de construction > Architectures pour TOUS de mes objectifs.
Le problème:
Lorsque j'ai mis à jour de Xcode Xcode 4.4 4.5, mon projet toujours compilé fine sur le simulateur, mais ne compile pas sur les appareils. Sur les appareils qu'il a jeté l'erreur "symbole(s) ne se trouvent pas pour l'architecture armv7s," avec le trompeur "Apple Mach-O Linker Error" et "clang: erreur: échec de la commande de l'éditeur de liens avec le code de sortie 1 (l'option-v pour voir invocation)."
La cause (dans mon cas):
Mon projet a plusieurs objectifs, et même si les Paramètres de construction > Architectures pour le cible principale a été définie pour inclure armv7s l'architecture, la cible principale dépend d'une autre cible (sous Phases de construction > Dépendances), et je n'avais pas pensé à réinitialiser les Paramètres de construction > Architectures pour que d'autres cibles, et j'ai dû changer d'inclure armv7s.
Je suppose que le simulateur et appareil de fonctionner sur différentes architectures, et c'est pourquoi le simulateur est OK, alors que l'appareil n'était pas.
Votre projet dépend d'un autre projet, et que, dans ce projet mis en place pour être une dépendance directe de votre cœur de cible? Si c'est le cas et que la dépendance n'est pas configuré, la charge cible ne peut pas être en train de se construire pour toutes les configurations (c'est à dire le simulateur)
Juste un sauvage deviner.
Une autre situation qui peut provoquer ce problème est que si vos appels de code en C++, ou est appelée par du code C++. J'ai eu un problème avec mon propre .c fichier de la fonction d'utilité apparaît comme "le symbole n'est pas trouvé" lorsqu'il est appelé à partir de l'Obj-C. La solution était de changer le type de fichier: dans Xcode 4, utilisez l'étendue volet infos pour définir le type de fichier "Objective-C++ Source"; dans Xcode 3, l'utilisation de "Get Info" pour changer le type de fichier source.rpc.objcpp".
Dans mon cas, aucune des solutions travaillé. J'ai dû supprimer le projet et effectuer un nouveau contrôle du serveur SVN. La chance me le projet a été hébergé dans un système de contrôle de version. Ne sais pas ce que je ferais autrement.
Dans un projet C++ à l'aide d'un définies templatized classe, tout en bénéficiant de la même erreur, j'ai sélectionné .fichier cpp à la définition de templatized classe dans l'explorateur de Projets, puis de les Supprimer > Supprimer la Référence. Aussi les associés .h fichier, encore référencé dans le projet, doit avoir une instruction #include pour le .rpc comme suit:
Si vous voulez le voir, un simple exemple de projet est sur github:
C'est un peu d'indirection la supercherie et je ne me souviens pas de la source originale de cette solution de contournement.
Si cette erreur apparaît tout à coup, il entend que le projet manque un peu de cadres. Les bibliothèques et les projets dépendants peut exiger des cadres, donc si vous avez ajouté un récemment alors que peut provoquer cette erreur.
Pour ajouter des cadres, cliquez-droit sur le nom du projet dans la vue projet, sélectionnez Ajouter, puis sélectionnez les cadres Existants de la liste. Ensuite, trouver le cadre avec les symboles que vous avez manqué.
L'autre chose est que si vous avez ajouté toutes les classes dans la compilation des ressources et enlevé que les classes du projet, puis le message d'erreur s'affiche. La meilleure chose à faire est de supprimer les classes à partir de la compilation de ressources(paramètres de construction--> compiler les sources) qui ont retiré du projet.
Dans mon cas, j'ai ajouté le admob classes dans le projet et élaboré le projet. Dans un cas, je ne veux pas inclure admobs dans mon projet, j'ai donc supprimé les références de la admob classes de mon projet. Lorsque cette erreur s'est produite, j'ai supprimé le .m classe de mon admob de compiler les ressources de résoudre ce problème.
Ce qui m'est arrivé lors de la tentative de copie sur le PSPDFKIT de démonstration de la bibliothèque dans mon projet. J'ai suivi toutes les instructions contenues dans le site + toutes les suggestions sur cette page.. pour une raison quelconque, il a gardé de donner à l'erreur ci-dessus, le problème est que si je grepped le message dans la méthode d'erreur.. il n'est apparu que dans le binaire (évidemment je n'ai pas accès au code source b/c je dois payer pour cela).
J'ai remarqué c'est que dans le mode page:
Je suis donc allé dans les entrailles de la que le fichier de configuration et trouvé ceci:
Puis je suis allé à l'exemple de projet fournis par l'auteur de ladite bibliothèque.. et a remarqué que le précédent drapeaux où copiée mot pour mot à l'autre de l'éditeur de liens drapeaux dans mes paramètres de construction.. mais dans mon projet.. ils ne l'étaient pas!.. Alors j'ai tout simplement copié et collé dans mon projet de construction de paramètres autres drapeaux de l'éditeur de liens et tout a fonctionné!
emporter point: si vous êtes en s'appuyant sur certains .xcconfig fichier sur votre installation, vérifier avec un exemple de code source ou de quelque chose et assurez-vous qu'il a été réellement appliquées.. il n'a pas été appliqué correctement dans mon cas
Une autre raison de ce qui pourrait se passer, c'est lorsque vous mettez à niveau un SDK.
Tout simplement si vous supprimez le groupe, puis faites glisser et déposez le nouveau dossier de projet, le "Chemin de Recherche des bibliothèques", aurait à la fois le Sdk. Pour le résoudre, il suffit de supprimer l'ancien SDK chemin.
J'avais utilisé un CLGeocoder sans l'ajout d'un Noyau.Emplacement Du Cadre. Fondamentalement, cette erreur peut signifier plusieurs choses. J'espère que cela aide quelqu'un d'autre.
J'ai été déconcerté par celui-ci avant de se rendre compte seulement j'ai ajouté un seul @interface et j'ai oublié d'ajouter le vide @mise en œuvre de bloc.