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

C++ Discussion :

Problème de compilation ?


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 36
    Par défaut Problème de compilation ?
    Bonjour à tous, j'espere que l'un d'entre vous poura résoudre mon problème.
    Voici donc mon pb:

    helpers.h

    #ifndef _HELPERS_H
    # define _HELPERS_H
    #include <string>

    long strToLong(std::string const &a, int b);
    long strToLongDef(std::string const c, int d, int e=0);
    double strToDouble(std::string const f);
    std::string soundEx(std::string const g);

    #endif /* !_HELPERS_H */


    helpers.cpp

    #include <iostream>
    #include <string>
    #include "helpers.h"

    using std::cout;
    using std::endl;

    long strToLong(std::string const &chaine,int base=0) {
    char * pEnd;
    long result = strtol(chaine.c_str(),&pEnd,base);
    return result;
    }

    long strToLongDef(std::string const & chaine,int defaut,int base=0) {
    char * pEnd;
    long result = strtol(chaine.c_str(),&pEnd,base);
    if(result==0 && chaine!="0")
    return defaut;
    else
    return result;
    }

    double strToDouble(std::string const & chaine) {
    char * pEnd;
    return strtod(chaine.c_str(),&pEnd);
    }

    std::string soundEx(std::string const & chaine) {
    std::string result="";
    unsigned int indexChaine=0;
    int indexResult=0;
    std::string lettre="";
    if(chaine[indexChaine]!='\0') {
    if(chaine[indexChaine]>='a' & chaine[indexChaine]<='z') {
    result += chaine[indexChaine++]-'a'+'A';
    }
    else {
    result += chaine[indexChaine++];
    }
    indexResult++;
    }
    else {
    result+='0';
    }
    for(indexChaine=0;indexChaine<chaine.size()&&result.size()<4;indexChaine++) {
    char lettre;
    if(chaine[indexChaine]>='a' & chaine[indexChaine]<='z') {
    lettre = chaine[indexChaine]-'a'+'A';
    }
    else {
    lettre = chaine[indexChaine];
    }
    switch(lettre) {
    case 'A':
    case 'E':
    case 'I':
    case 'O':
    case 'U':
    case 'Y':
    case 'H':
    case 'W':
    break;
    case 'B':
    case 'F':
    case 'P':
    case 'V':
    if(result[indexResult]!='1')
    result+="1";
    break;
    case 'C':
    case 'G':
    case 'J':
    case 'K':
    case 'Q':
    case 'S':
    case 'X':
    case 'Z':
    if(result[indexResult]!='2')
    result+="2";
    break;
    case 'D':
    case 'T':
    if(result[indexResult]!='3')
    result+="3";
    break;
    case 'L':
    if(result[indexResult]!='4')
    result+="4";
    break;
    case 'M':
    case 'N':
    if(result[indexResult]!='5')
    result+="5";
    break;
    case 'R':
    if(result[indexResult]!='6')
    result+="6";
    break;
    }
    }
    if(result.size()<=4) {
    for(unsigned i=result.size();i<4;i++) {
    result+='0';
    }
    }
    return result;
    }


    main.cpp

    #include <iostream>
    #include <string>
    #include "helpers.h"
    using std::cout;
    using std::endl;
    using std::string;

    int main(void) {
    cout << strToLong("1234", 10) << endl;
    cout << strToLongDef("0x2a", -1) << endl;
    cout << strToDouble("143.17") << endl;
    cout << soundEx("Robert") << endl;
    return 0;
    }




    Voici ce que j'obtiens en faisant:
    g++ -O2 -Wall -W -Werror -O2 main.cpp -o main
    /tmp/ccg2wa36.o: In function `main':
    main.cpp.text+0xac): undefined reference to `strToLong(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)'
    main.cpp.text+0x109): undefined reference to `strToLongDef(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, int, int)'
    main.cpp.text+0x152): undefined reference to `strToDouble(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)'
    main.cpp.text+0x1a2): undefined reference to `soundEx(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)'
    collect2: ld returned 1 exit status
    make: *** [main] Error 1

    Si quelqu'un pouvait m'aider ca sera sympa
    merci d'avance

  2. #2
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Il faudrait peut-etre lui dire qu'il a besoin de helpers?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 36
    Par défaut
    C'est ce que j'ai fait dans main.cpp:
    #include "helpers.h"

  4. #4
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    helpers.cpp devrait figurer ici :

    Code X : Sélectionner tout - Visualiser dans une fenêtre à part
    g++ -O2 -Wall -W -Werror -O2 main.cpp -o main


    PS : pense à utiliser les balises CODE

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 36
    Par défaut
    Comment faire car je dois avouer que je suis débutant de chez débutant

  6. #6
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Comme ça :

    Code X : Sélectionner tout - Visualiser dans une fenêtre à part
    g++ -O2 -Wall -W -Werror -O2 main.cpp helpers.cpp -o main

  7. #7
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Citation Envoyé par killer75
    C'est ce que j'ai fait dans main.cpp:
    #include "helpers.h"
    La tu lui a dit que main.cpp avait besoin de helpers.h, tu ne dis jamais que le programme a besoin de helpers.cpp.

    (En passant, ne pas utiliser des identificateurs commençant par un _ ou contenant deux _ sauf si tu es sur de connaître les cas où on peut; personnellement, je ne les retiens jamais.)

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

Discussions similaires

  1. problème de compilation sous visual C++
    Par fabmili dans le forum MFC
    Réponses: 4
    Dernier message: 08/02/2004, 19h52
  2. problème de compil devc++ socket
    Par stefdem dans le forum Autres éditeurs
    Réponses: 2
    Dernier message: 11/12/2003, 11h33
  3. Réponses: 1
    Dernier message: 29/10/2003, 12h16
  4. Problème de compilation de la DLL du XMLRad
    Par [DreaMs] dans le forum XMLRAD
    Réponses: 2
    Dernier message: 16/04/2003, 16h46
  5. Réponses: 1
    Dernier message: 27/05/2002, 01h44

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