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 avec Boost::Regex


Sujet :

C++

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2009
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2009
    Messages : 49
    Points : 38
    Points
    38
    Par défaut problème de compilation avec Boost::Regex
    Bonjour, j'aimerai utiliser les expressions régulières mais j'arrive pas à compiler.

    J'utilise ce code : fichier regex.cpp que je compile avec g++ regex.cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    #include <iostream>
    #include <string>
    #include <boost/regex.hpp>
     
    using namespace std;
     
    int main( )
    {
    	boost::regex re("<font >(.*?)</font>");
    	return 0;
    }
    Et ça me retourne ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    /tmp/cc5mgWpu.o: In function `boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::assign(char const*, char const*, unsigned int)':
    regex.cpp:(.text._ZN5boost11basic_regexIcNS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE6assignEPKcS7_j[boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::assign(char const*, char const*, unsigned int)]+0x22): undefined reference to `boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::do_assign(char const*, char const*, unsigned int)'
    collect2: ld returned 1 exit status

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2009
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2009
    Messages : 49
    Points : 38
    Points
    38
    Par défaut
    J'ai oublié de spécifier que je suis sous Ubuntu, et que j'ai juste installé le paquet des dépôts.

  3. #3
    Membre chevronné
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Points : 2 107
    Points
    2 107
    Par défaut
    Ce n'est pas une erreur de compilation, mais une erreur de lien.
    Il faut que tu link avec regex !

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2009
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2009
    Messages : 49
    Points : 38
    Points
    38
    Par défaut
    Et comment je fais ça ?

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    188
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 188
    Points : 248
    Points
    248
    Par défaut
    ça dépend se que tu utilise comme EDI(ou si tu le fais a la main) pour compiler.
    mais il faut que tu rajoute en gros l'option
    -L/chemin/boost/lib

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2009
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2009
    Messages : 49
    Points : 38
    Points
    38
    Par défaut
    Et bien, j'utilise gedit pour mon code et g++ pour compiler.

    Après
    j'obtiens ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    /usr/include/boost/tr1/regex.hpp
    /usr/include/boost/iostreams/filter/regex.hpp
    /usr/include/boost/algorithm/string/regex.hpp
    /usr/include/boost/spirit/home/classic/utility/regex.hpp
    /usr/include/boost/spirit/utility/regex.hpp
    /usr/include/boost/regex/v4/regex.hpp
    /usr/include/boost/regex.hpp
    j'ai beau essayer toutes les combinaisons possibles, rien ne marche.

    j'ai toujours ce satané message d'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    /tmp/ccFa4apE.o: In function `boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::assign(char const*, char const*, unsigned int)':
    regex.cpp:(.text._ZN5boost11basic_regexIcNS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE6assignEPKcS7_j[boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::assign(char const*, char const*, unsigned int)]+0x22): undefined reference to `boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::do_assign(char const*, char const*, unsigned int)'
    collect2: ld returned 1 exit status

  7. #7
    Membre expérimenté Avatar de alexrtz
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2003
    Messages
    639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2003
    Messages : 639
    Points : 1 359
    Points
    1 359
    Par défaut
    Citation Envoyé par zbahoui Voir le message
    Après
    Tu ne cherches pas la bonne chose

    Grossièrement, les .hpp servent à dire au compilateur "voilà comment doivent s'utiliser ces classes ou ces fonctions".
    Les définitions de ces fonctions (le code qui sera appelé) sont dans des bibliothèques binaires.

    Sur Ubuntu, elles sont situées dans /usr/lib par défaut.

    Essaye en ajoutant :
    Si ça ne marche pas, essaye en ajoutant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    -L/usr/lib/boost -lboostregex
    "Je suis incapable d'expliquer ce qui se passa ensuite : je lâchai quelque chose, quelque chose à quoi je m'agrippais depuis toujours sans m'en rendre compte. Je m'enfonçais dans une obscurité chaude, moelleuse et protectrice, tandis qu'un loup montait la garde par mes propres yeux."

  8. #8
    Membre actif
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    188
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 188
    Points : 248
    Points
    248
    Par défaut
    je viens de tester

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    g++ main.cpp -lboost_regex
    avec ton code et sa tourne sur ma config

    EDIT:
    d'ailleurs pour trouver ta lib tu peux faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    locate -i boost | grep 'regex.*\.a'

Discussions similaires

  1. probleme de compilation avec boost
    Par doof dans le forum Bibliothèques
    Réponses: 7
    Dernier message: 07/06/2005, 21h38
  2. Problème de compilation avec Direct Input
    Par di-giac dans le forum DirectX
    Réponses: 6
    Dernier message: 06/05/2005, 18h19
  3. [MFC] Problème de compilation avec afxctl.h
    Par mick74 dans le forum MFC
    Réponses: 7
    Dernier message: 15/06/2004, 13h51
  4. Problème de compilation avec Dev-C++
    Par Rouliann dans le forum Dev-C++
    Réponses: 14
    Dernier message: 14/06/2004, 18h44
  5. Réponses: 1
    Dernier message: 29/10/2003, 12h16

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