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

SL & STL C++ Discussion :

Erreur compilation avec <string>


Sujet :

SL & STL C++

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 113
    Points : 41
    Points
    41
    Par défaut Erreur compilation avec <string>
    Salut.

    Je demarre en C++ sous redhat, mais je suis arrivé à ecrire des petits programmes.

    Mais quand j'ecrit ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    #include <string>
    void main(int argc, char *argv[]){
            string str="salut";
    }
    Et que je le compile avec mon gcc habituel, j'obtiens :

    /tmp/ccqY0QIC.o: In function `basic_string<char, string_char_traits<char>, __default_alloc_template<true, 0> >::assign(char const *)':
    /tmp/ccqY0QIC.o(.basic_string<char, string_char_traits<char>, __default_alloc_template<true, 0> >::gnu.linkonce.t.assign(char const *)+0x13): undefined reference to `string_char_traits<char>::length(char const *)'
    /tmp/ccqY0QIC.o: In function `basic_string<char, string_char_traits<char>, __default_alloc_template<true, 0> >::Rep::copy(unsigned int, char const *, unsigned int)':
    /tmp/ccqY0QIC.o(.basic_string<char, string_char_traits<char>, __default_alloc_template<true, 0> >::Rep::gnu.linkonce.t.copy(unsigned int, char const *, unsigned int)+0x27): undefined reference to `string_char_traits<char>::copy(char *, char const *, unsigned int)'
    /tmp/ccqY0QIC.o: In function `basic_string<char, string_char_traits<char>, __default_alloc_template<true, 0> >::replace(unsigned int, unsigned int, char const *, unsigned int)':
    /tmp/ccqY0QIC.o(.basic_string<char, string_char_traits<char>, __default_alloc_template<true, 0> >::gnu.linkonce.t.replace(unsigned int, unsigned int, char const *, unsigned int)+0x2b): undefined reference to `__out_of_range(char const *)'
    /tmp/ccqY0QIC.o(.basic_string<char, string_char_traits<char>, __default_alloc_template<true, 0> >::gnu.linkonce.t.replace(unsigned int, unsigned int, char const *, unsigned int)+0x79): undefined reference to `__length_error(char const *)'
    /tmp/ccqY0QIC.o: In function `basic_string<char, string_char_traits<char>, __default_alloc_template<true, 0> >::Rep::move(unsigned int, char const *, unsigned int)':
    /tmp/ccqY0QIC.o(.basic_string<char, string_char_traits<char>, __default_alloc_template<true, 0> >::Rep::gnu.linkonce.t.move(unsigned int, char const *, unsigned int)+0x27): undefined reference to `string_char_traits<char>::move(char *, char const *, unsigned int)'
    /tmp/ccqY0QIC.o: In function `__malloc_alloc_template<0>::_S_oom_malloc(unsigned int)':
    /tmp/ccqY0QIC.o(.__malloc_alloc_template<0>::gnu.linkonce.t._S_oom_malloc(unsigned int)+0x1a): undefined reference to `endl(ostream &)'
    /tmp/ccqY0QIC.o(.__malloc_alloc_template<0>::gnu.linkonce.t._S_oom_malloc(unsigned int)+0x27): undefined reference to `cerr'
    /tmp/ccqY0QIC.o(.__malloc_alloc_template<0>::gnu.linkonce.t._S_oom_malloc(unsigned int)+0x2c): undefined reference to `ostream::operator<<(char const *)'
    /tmp/ccqY0QIC.o(.__malloc_alloc_template<0>::gnu.linkonce.t._S_oom_malloc(unsigned int)+0x37): undefined reference to `ostream::operator<<(ostream &(*)(ostream &))'
    collect2: ld returned 1 exit status

    quelque un peut me dire pourquoi ? c'est bête, je cherche à utliser les strings !

    Merci.

  2. #2
    Membre averti Avatar de Bob.Killer
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    336
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 336
    Points : 332
    Points
    332
    Par défaut
    string fait parti de la std donc il faut mettre : std:: devant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #include <iostream> 
    #include <string> 
    void main(int argc, char *argv[]){ 
            std::string str;
            str.assign("salut"); // pour l init mais pas sur...
    }

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 113
    Points : 41
    Points
    41
    Par défaut


    Marche toujours pas ! C fou !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    #include <iostream>
    #include <string>
     
     
    void main(int argc, char *argv[]){
            std::string str="salut";
    }
    toujours la même erreur !!

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2004
    Messages : 54
    Points : 76
    Points
    76
    Par défaut
    Et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    #include <iostream>
    #include <string>
     
    void main(int argc, char *argv[]){
            std::string str("salut") ;
    }
    ?

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 113
    Points : 41
    Points
    41
    Par défaut
    Et non.


    C dingue quand même.

    je suis sur un serveur dedié en redhat !!

  6. #6
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 279
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 279
    Points : 11 015
    Points
    11 015
    Par défaut
    :s/gcc/g++

  7. #7
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 753
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 753
    Points : 10 704
    Points
    10 704
    Billets dans le blog
    3
    Par défaut
    C'est ce que je me suis dit*, mais c'est ld qui gueule, pourquoi ?

    *comprenez : utiliser g++ et non gcc.

  8. #8
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 279
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 279
    Points : 11 015
    Points
    11 015
    Par défaut
    A la compilation, c'est pratiquement identique. Tandis qu'à l'édition de liens, g++ c'est vaguement gcc mais avec un flag supplémentaire passé en argument.

    (Je simplifie le peu que j'ai suivi de l'affaire)

  9. #9
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 753
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 753
    Points : 10 704
    Points
    10 704
    Billets dans le blog
    3
    Par défaut
    J'aurai pensé qu'en mode C le compilo geueulait sur les mots clés C++.

  10. #10
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 279
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 279
    Points : 11 015
    Points
    11 015
    Par défaut
    Moi aussi.

Discussions similaires

  1. Erreur de compilation avec les string et char*
    Par number9 dans le forum C++
    Réponses: 3
    Dernier message: 30/04/2012, 09h58
  2. ERREUR COMPILATION AVEC PCW
    Par beetS dans le forum Windows
    Réponses: 0
    Dernier message: 01/04/2008, 19h19
  3. Erreur de compilation avec Ada.Strings.Unbounded
    Par semaj_james dans le forum Ada
    Réponses: 7
    Dernier message: 20/04/2007, 16h28
  4. Erreur compilation avec Code Blocks
    Par Ulver dans le forum wxWidgets
    Réponses: 3
    Dernier message: 10/04/2007, 22h26
  5. Réponses: 3
    Dernier message: 22/08/2005, 18h28

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