web-dev-qa-db-fra.com

Symboles non définis pour l'architecture i386

Duplicata possible:
symbole (s) introuvable (s) pour l'architecture i386

J'ai une application à compléter, et quand je commence à essayer de comprendre ce que le développeur précédent a fait (cela a été fait avec Xcode 3 je pense) en exécutant le simulateur, Xcode 4 me montre 25 problèmes:

    Ld build/Debug-iphonesimulator/RadioPlayer.app/RadioPlayer normal i386
    cd /Users/haithembenhammouda/Desktop/SonVidéo
    setenv MACOSX_DEPLOYMENT_TARGET 10.6
    setenv PATH "/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"
    /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/gcc-4.2 -Arch i386 -isysroot /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.3.sdk -L/Users/haithembenhammouda/Desktop/SonVidéo/build/Debug-iphonesimulator -L/Users/haithembenhammouda/Desktop/SonVidéo/Classes/RadioKitLib -L/Users/haithembenhammouda/Desktop/SonVidéo -F/Users/haithembenhammouda/Desktop/SonVidéo/build/Debug-iphonesimulator -filelist /Users/haithembenhammouda/Desktop/SonVidéo/build/SonVidéo.build/Debug-iphonesimulator/RadioPlayer.build/Objects-normal/i386/RadioPlayer.LinkFileList -mmacosx-version-min=10.6 -ObjC -Xlinker -objc_abi_version -Xlinker 2 -framework Foundation -framework UIKit -framework CoreGraphics -framework SystemConfiguration -framework MediaPlayer -framework CFNetwork -framework AudioToolbox -framework QuartzCore -lsqlite3.0 -framework AVFoundation -lRadioKit -framework MessageUI -o /Users/haithembenhammouda/Desktop/SonVidéo/build/Debug-iphonesimulator/RadioPlayer.app/RadioPlayer
Undefined symbols for architecture i386:
  "_OBJC_CLASS_$_RadioKit", referenced from:
      objc-class-ref in RadioPlayerViewController.o
  ".objc_class_name_UIColor", referenced from:
      pointer-to-literal-objc-class-name in libRadioKit.a(BufferView.o)
  ".objc_class_name_UIView", referenced from:
      .objc_class_name_BufferView in libRadioKit.a(BufferView.o)
  ".objc_class_name_NSObject", referenced from:
      .objc_class_name_ASE_Event in libRadioKit.a(ASE_Event.o)
      .objc_class_name_AudioStreamEngine in libRadioKit.a(AudioStreamEngine.o)
      .objc_class_name_RadioKit in libRadioKit.a(RadioKit.o)
      .objc_class_name_XMLMetaParser in libRadioKit.a(XMLMetaParser.o)
  ".objc_class_name_NSDate", referenced from:
      pointer-to-literal-objc-class-name in libRadioKit.a(AudioStreamEngine.o)
  ".objc_class_name_NSValue", referenced from:
      pointer-to-literal-objc-class-name in libRadioKit.a(AudioStreamEngine.o)
  ".objc_class_name_NSScanner", referenced from:
      pointer-to-literal-objc-class-name in libRadioKit.a(AudioStreamEngine.o)
  ".objc_class_name_NSCharacterSet", referenced from:
      pointer-to-literal-objc-class-name in libRadioKit.a(AudioStreamEngine.o)
  ".objc_class_name_NSAutoreleasePool", referenced from:
      pointer-to-literal-objc-class-name in libRadioKit.a(AudioStreamEngine.o)
      pointer-to-literal-objc-class-name in libRadioKit.a(XMLMetaParser.o)
      pointer-to-literal-objc-class-name in libRadioKit.a(reachability.o)
  ".objc_class_name_NSFileManager", referenced from:
      pointer-to-literal-objc-class-name in libRadioKit.a(AudioStreamEngine.o)
  ".objc_class_name_NSURLConnection", referenced from:
      pointer-to-literal-objc-class-name in libRadioKit.a(AudioStreamEngine.o)
      pointer-to-literal-objc-class-name in libRadioKit.a(XMLMetaParser.o)
  ".objc_class_name_NSThread", referenced from:
      pointer-to-literal-objc-class-name in libRadioKit.a(AudioStreamEngine.o)
  .....(etc)
ld: symbol(s) not found for architecture i386
collect2: ld returned 1 exit status

PS: J'ai vérifié les frameworks et ils existent tous.

23
highthem

Un peu tard pour la fête mais peut être utile à quelqu'un avec cette erreur ..

Je viens de copier directement un tas de fichiers dans un projet Xcode, si vous oubliez de les ajouter à vos projets Build Phases, vous obtiendrez l'erreur "Symboles non définis pour l'architecture i386". Ajoutez donc vos fichiers d'implémentation aux sources de compilation et les fichiers Xib aux ressources de bundle de copie.

L'erreur me disait qu'il n'y avait pas de lien vers mes classes simplement parce qu'elles n'étaient pas incluses dans les sources de compilation, ce qui est vraiment évident, mais cela pourrait éviter à quelqu'un un mal de tête.

24
StuR

Ajoutez le cadre requis pour la méthode utilisée dans la cible du projet dans la liste "Lier les binaires aux bibliothèques" des phases de construction, cela fonctionnera facilement. Comme j'ai importé dans mon projet

QuartzCore.framework

Pour le bug

Symboles non définis pour l'architecture i386:

21
Rajesh

Au risque de paraître évident, vérifiez toujours l'orthographe de vos fichiers de classe de transfert. Parfois, XCode (au moins XCode 4.3.2) passera au vert une déclaration qui est en fait mal chamelée. Comme dans cet exemple:

"_OBJC_CLASS_$_RadioKit", referenced from:
  objc-class-ref in RadioPlayerViewController.o

Si RadioKit était un fichier de classe et que vous en faites une propriété d'un autre fichier, dans la déclaration d'interface, vous pouvez voir que

Radiokit *rk;

a "Radiokit" en vert lorsque la décalcomanie réelle doit être:

RadioKit *rk;

Cette erreur générera également ce type d'erreur. Un autre exemple (dans mon cas), est lorsque vous avez des extensions _iPhone et _iphone sur vos noms de classe pour les applications universelles. Une fois que j'ai changé le fichier approprié de _iphone en _iPhone correct, les erreurs ont disparu.

2
whyoz