Erreur : Apple Mach-O Linker Error

[font=arial, helvetica, sans-serif]Bonjour à  tous,[/font]




[font=arial, helvetica, sans-serif]Je n'aime pas trop "coller" des messages d'erreurs brutes sur un forum, mais la je cale.[/font]




[font=arial, helvetica, sans-serif]Historique du problème : [/font]


[font=arial, helvetica, sans-serif]- Mon code compile et s'exécute correctement.[/font]


[font=arial, helvetica, sans-serif]- Je fais une recherche d'un pattern (ctrl-f), la j'ai peut être merdouillé en faisant un autre control-quelque-chose.[/font]


[font=arial, helvetica, sans-serif]- Depuis, quand je build, alors que je n'ai rien changé au code, j'ai 2 erreurs :[/font]




Undefined symbols for architecture i386:


"_OBJC_CLASS_$_TCase", referenced from:


objc-class-ref in AppDelegate.o


ld: symbol(s) not found for architecture i386


clang: error: linker command failed with exit code 1 (use -v to see invocation)






Undefined symbols for architecture i386:


"_OBJC_CLASS_$_TCase", referenced from:


objc-class-ref in AppDelegate.o


ld: symbol(s) not found for architecture i386


clang: error: linker command failed with exit code 1 (use -v to see invocation)




Je ne comprends évidemment pas la raison de ce i386 alors que je compile pour de l'iOS ...



Quelqu'un a une idée de ce que je peux faire.



Evidemment, j'allais faire un commit des sources juste après ...



D'avance merci.



Sethy

Réponses

  • Si tu utilises le simulateur iOS c'est bien une architecture i386.



    Manifestement il te manque une bibliothèque ou un framework dans lequel est définie la classe TCase.
  • AliGatorAliGator Membre, Modérateur
    1) i386 parce que tu compiles pour le simulateur et que le simu utilise l'archi i386 contrairement au device

    2) L'erreur veut dire que tu utilises une classe nommée "TCase" quelque part dans AppDelegate.m mais que cette classe n'est définie nulle part (tu ne donnes nulle part son @implementation).



    Du coup quand il compile AppDelegate.m il a le symbole "_OBJC_CLASS_$_TCase" qui est utilisé mais non défini dans AppDelegate.o, et comme nulle part ailleurs dans un autre .m (qui sera compilé en .o) tu ne donne l'implémentation de cette classe il ne sait pas quoi faire.





    Soit tu as bien une classe TCase qui traine dans ton projet, mais tu l'as décochée du Target par inadvertence et du coup maintenant il n'est plus dans la liste des fichiers compilés quand tu compiles ton target, soit tu avais une classe qui s'appellait STCase ou je ne sais quoi et tu as supprimé par inadvertance le "S" devant "TCase", un truc comme ça (ceci dit si c'était ça la raison, tu aurais en plus de ce "Linker Error" des warnings qui t'auraient mis sur la voie -- et bien évidemment quand on a une erreur insoluble il faut toujours regarder si les warnings ne nous avaient pas déjà  mis sur la voie avant, ils sont là  pour ça...
  • Merci beaucoup Ali.



    Je n'avais pas de Warning. Apparemment, ma faute de frappe était dans un enum de constante, qui était chargé via un .h dans le fichier qui implémente la classe TCase, d'où le prob.



    Merci pour l'aide rapide.
Connectez-vous ou Inscrivez-vous pour répondre.