IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Objective-C Discussion :

Undefined symbols for architecture armv7 [Objective-C]


Sujet :

Objective-C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2012
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2012
    Messages : 57
    Par défaut Undefined symbols for architecture armv7
    Bonjour, voila mon soucis

    Je voudrais crée une variable globale à toutes les classes de mon applications, me documentant sur le sujet voila ce que je fait

    VCHome.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    extern NSDictionary *chaton;
     
    @interface .....
    VHome.m
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    - (void) newMessageReceived: (NSDictionnary *)messageContent{
        chaton = messageContent;
    }
    VCDetailChatAvecMembre.m Quelque part dans le viewDidLoad()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    NSLog(@"CHATON : %@", chaton);
    Cette erreur me tombe dessus quand je compile
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Undefined symbols for architecture armv7:
      "_chaton", referenced from:
          -[VCHome newMessageReceived:] in VCHome.o
          -[VCDetailChatAvecMembre viewDidLoad] in VCDetailChatAvecMembre.o
    ld: symbol(s) not found for architecture armv7
    clang: error: linker command failed with exit code 1 (use -v to see invocation)
    Merci pour vos réponse.

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 963
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 963
    Par défaut
    Citation Envoyé par ch0c4 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    extern NSDictionary *chaton;
    et le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    NSDictionary *chaton;
    il est dans quel fichier .m ?

  3. #3
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2012
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2012
    Messages : 57
    Par défaut
    Nulle part car c'est une variable global et si je veux le mettre dans n'importe qu'elle endroit dans le code xcode m'affiche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Interface type cannot be statically allocated

  4. #4
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 963
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 963
    Par défaut
    Citation Envoyé par ch0c4 Voir le message
    Nulle part car c'est une variable global et si je veux le mettre dans n'importe qu'elle endroit dans le code xcode m'affiche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Interface type cannot be statically allocated
    çà n'a rien à voir :
    en C et donc aussi en Objective-C et Objective-C++, vous déclarez dans le .h le nom et le type de la variable comme étant alloué ailleurs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    extern TYPE var_name ;
    et dans le .c, le .m ou .mm
    le message "Interface type cannot be statically allocated" apparaît dans les conditions suivantes : vous avez déclaré une classe ou une interface en Objective-C et vous déclarez ensuite une variable en oubliant le "*" pour indiquer "pointeur sur", par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    NSObject var_name ;
    au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    NSObject *var_name ;
    Les classes, interfaces, protocoles en Objective-C sont toujours allouées dynamiquement contrairement au C++ qui admet les 2.
    Et Objective-C çà reste du C : donc "*" pour les pointeurs... la syntaxe "à la Java" ne passe pas pour les déclarations, par contre à l'invocation : "myObject.itsProperty" fonctionnera aussi bien que "myObject->itsProperty", pour peu que vous utilisiez correctement les accessors (@synthetize, @property et C°).

  5. #5
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2012
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2012
    Messages : 57
    Par défaut
    Salut, merci pour la réponse,

    Mon problème n'est pas réglé car je veux que ma variable "chaton" qui est dans VCHome est la même valeur dans VCDetailChatAvecMembre.

    Avec ta solution sa me résous mon soucis de "linker" mais pas mon soucis de variable.

    Si je re-déclare ma variable "chaton" dans VCDetailChatAvecMembre elle n'a plus la valeur qu'elle avait dans le VCHome (normal tu vas me dire).

    Donc mon soucis c'est, comment je peux avoir cette variable (qui est dynamique) dans 2 classes différentes avec la même valeur ?

  6. #6
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 963
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 963
    Par défaut
    un seul NSDictionary *chaton; dans un seul .m évidemment

    d'ailleurs s'il n'y a plus de problème de link c'est que c'est le cas sinon vous auriez soit un undefined variable soit un duplicate variable...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. IOS : undefined symbols for architecture i386
    Par Adryiy dans le forum Développement iOS
    Réponses: 1
    Dernier message: 23/08/2014, 20h26
  2. [CMake] Undefined symbols for architecture
    Par Joda89 dans le forum Systèmes de compilation
    Réponses: 0
    Dernier message: 11/05/2012, 13h07
  3. [CMake] Undefined symbols for architecture x86_64:
    Par Joda89 dans le forum Systèmes de compilation
    Réponses: 0
    Dernier message: 11/05/2012, 13h06
  4. [CMake] Undefined symbols for architecture x86_64:
    Par Joda89 dans le forum Systèmes de compilation
    Réponses: 0
    Dernier message: 11/05/2012, 13h04
  5. Undefined symbols for architecture x86_64 ?
    Par sebouff dans le forum C++
    Réponses: 1
    Dernier message: 04/04/2012, 21h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo