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

Boost C++ Discussion :

Probleme regex boost


Sujet :

Boost C++

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    79
    Détails du profil
    Informations personnelles :
    Âge : 31
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 79
    Par défaut Probleme regex boost
    Bonjour,

    Voila, j'ai un problème avec la librairie regex de boost, un code comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #include <boost/regex.hpp>
    #include <iostream> 
    using namespace std;
    using namespace boost;
     
    int main(int argc, char* argv[])
    {
      regex reg("regex");
      return 0;
    }
    Me renvois cette erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    /tmp/ccr6d67w.o: In function `boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::assign(char const*, char const*, unsigned int)':
    test.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)]+0x27): 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
    Quelqu'un aurais une solution ?
    Merci

  2. #2
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Par défaut
    undefined reference ça veut dire que t'as pas lié ce qu'il fallait...

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    79
    Détails du profil
    Informations personnelles :
    Âge : 31
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 79
    Par défaut
    Ben j'ai beau recopier un exemple qui est dans la documentation j'obtien la meme erreur, même avec d'autres librairies :s
    Quelqu'un aurait la solution ?

  4. #4
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Par défaut
    Il faut lier boost.regex

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    79
    Détails du profil
    Informations personnelles :
    Âge : 31
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 79
    Par défaut
    Ha oui, je vien de trouver àa, il faut utiliser l'opition -l de g++
    Merci

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    79
    Détails du profil
    Informations personnelles :
    Âge : 31
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 79
    Par défaut
    Mais comment savoir sur quoi je doit lié ?
    Par exemple si j'ai cette erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    /Cpp/tests $ g++ asio.cpp -o asio -lpthread
    /tmp/cc1OFKCa.o: In function `__static_initialization_and_destruction_0(int, int)':
    asio.cpp:(.text+0x280): undefined reference to `boost::system::get_system_category()'
    asio.cpp:(.text+0x28c): undefined reference to `boost::system::get_posix_category()'
    asio.cpp:(.text+0x298): undefined reference to `boost::system::get_posix_category()'
    asio.cpp:(.text+0x2a4): undefined reference to `boost::system::get_system_category()'
    /tmp/cc1OFKCa.o: In function `boost::asio::error::get_system_category()':
    asio.cpp:(.text._ZN5boost4asio5error19get_system_categoryEv[boost::asio::error::get_system_category()]+0x5): undefined reference to `boost::system::get_system_category()'
    /tmp/cc1OFKCa.o: In function `boost::system::error_code::error_code()':
    asio.cpp:(.text._ZN5boost6system10error_codeC1Ev[boost::system::error_code::error_code()]+0x17): undefined reference to `boost::system::get_system_category()'
    collect2: ld returned 1 exit status
    Je doit lié sur quoi d'autre ?
    merci .

  7. #7
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Par défaut
    Salut,

    Pour Boost.Asio il faut lier Boost.System, comme l'indique la documentation.

    MAT.

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    79
    Détails du profil
    Informations personnelles :
    Âge : 31
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 79
    Par défaut
    Quand je lie Boost.System sa me renvois cette erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ~/Files/Programmes/Cpp/tests $ g++ asio.cpp -o asio -lBoost.System
    /usr/bin/ld: cannot find -lBoost.System
    collect2: ld returned 1 exit status
    J'ai vu qui fallais aussi reconstruire Boost, seulement, il doit me manquer g++.jam :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    theo7@George:/usr/include/boost$ sudo bjam --with-system --with-thread --with-regex --with-asio --toolset=g++
    g++.jam: No such file or directory
    /usr/share/boost-build/build/toolset.jam:36: in toolset.using
    rule g++.init unknown in module toolset.
    /usr/share/boost-build/build-system.jam:206: in load
    /usr/share/boost-build/kernel/modules.jam:261: in import
    /usr/share/boost-build/kernel/bootstrap.jam:132: in boost-build
    /usr/share/boost-build/boost-build.jam:1: in module scope
    J'ai regarder dans la liste des "toolset" de boost : http://www.boost.org/doc/tools/jam/jam/building.html
    Il n'y a pas g++, et je n'ai pas de commande "build", j'ai bien installer boost-build .

    Quelq'un aurait une solution ?
    Merci .

  9. #9
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Par défaut
    Citation Envoyé par theo7 Voir le message
    Quand je lie Boost.System sa me renvois cette erreur
    Bien sûr, le nom du fichier n'est pas libBoost.System.a

    Citation Envoyé par theo7 Voir le message
    J'ai regarder dans la liste des "toolset" de boost (...) Il n'y a pas g++
    Essaye gcc.

    MAT.

  10. #10
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Par défaut
    Ma réponse étant un peu courte (désolé), j'élabore un peu.

    Compile déjà les bibliothèques dont tu as besoin et ça va te permettre de voir quel est le nom exact des fichiers .a pour pouvoir les ajouter lors de l'édition des liens.
    Sinon il faut retirer le --with-asio dans ta ligne de commande puisque cette bibliothèque ne se compile pas (elle est entièrement constituée de fichiers d'entête). Pour obtenir la liste des bibliothèques compilables on peut faire : MAT.

  11. #11
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Par défaut
    Citation Envoyé par theo7 Voir le message
    Y a moyen de connaitre le nom du fichier ? J'ai pas trouver dans la doc .
    Comme je disais au-dessus, compile les bibliothèques et tu vas bien voir.
    Sinon il y a pas de trucs expliqués dans Getting Started on Unix Variants.

    MAT.

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    79
    Détails du profil
    Informations personnelles :
    Âge : 31
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 79
    Par défaut
    Citation Envoyé par Mat007 Voir le message
    Comme je disais au-dessus, compile les bibliothèques et tu vas bien voir.
    Sinon il y a pas de trucs expliqués dans Getting Started on Unix Variants.

    MAT.
    Hmm oui j'avais pas vu ton message, j'etait rester coincé sur la page "Répondre à la discussion" .

    "compile les bibliothèques", c'est a dire ?
    Sinon, je n'arrive toujours pas a faire fonctionner bjam :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    theo7@George:/usr/include/boost$ sudo bjam --with-system --with-thread --with-regex --toolset=gcc
    error: no Jamfile in current directory found, and no target references specified.
    J'ai trouver un "JamFile" dans /usr/include/boost/lib/system/build, en essayant de faire tourner bjam dans ce dossier, ça me renvois toujours une erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    theo7@George:/usr/include/boost/libs/system/build$ sudo bjam --with-system --with-thread --with-regex --toolset=gcc
    error: Could not find parent for project at '.'
    error: Did not find Jamfile or project-root.jam in any parent directory.
    Le JamFile contient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    # Boost System Library Build Jamfile
     
    # (C) Copyright Beman Dawes 2002, 2006
     
    # Distributed under the Boost Software License, Version 1.0.
    # (See accompanying file LICENSE_1_0.txt or www.boost.org/LICENSE_1_0.txt)
     
    # See library home page at http://www.boost.org/libs/system
     
    project boost/system
        : source-location ../src
        : usage-requirements  # pass these requirement to dependents (i.e. users)
          <link>shared:<define>BOOST_SYSTEM_DYN_LINK=1
          <link>static:<define>BOOST_SYSTEM_STATIC_LINK=1
        ;
     
    SOURCES = error_code ;
     
    lib boost_system
       : $(SOURCES).cpp
       : <link>shared:<define>BOOST_SYSTEM_DYN_LINK=1
         <link>static:<define>BOOST_SYSTEM_STATIC_LINK=1
       ;
     
    boost-install boost_system ;

  13. #13
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Par défaut
    Il faut compiler les sources et non les fichiers d'entête (ce que contient /usr/include).
    Récupère les sources, comme indiqué dans Getting Started on Unix Variants.

    MAT.

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    79
    Détails du profil
    Informations personnelles :
    Âge : 31
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 79
    Par défaut
    Une fosi boost 1.35 décompresser dans mon /usr/include, je lance bjam dans le dossier de mon nouveau boost, pas d'erreur .
    Après je lance ./configure puis make, mais make me retourne une erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     g++"  -ftemplate-depth-128 -O3 -finline-functions -Wno-inline -Wall -fPIC -pthread  -DBOOST_ALL_NO_LIB=1 -DBOOST_IOSTREAMS_DYN_LINK=1 -DNDEBUG  -I"." -c -o "bin.v2/libs/iostreams/build/gcc-4.2.3/release/threading-multi/bzip2.o" "libs/iostreams/src/bzip2.cpp"
     
    ...failed gcc.compile.c++ bin.v2/libs/iostreams/build/gcc-4.2.3/release/threading-multi/bzip2.o...
    ...skipped <pbin.v2/libs/iostreams/build/gcc-4.2.3/release/threading-multi>libboost_iostreams-gcc42-mt-1_35.so.1.35.0 for lack of <pbin.v2/libs/iostreams/build/gcc-4.2.3/release/threading-multi>bzip2.o...
    ...failed updating 1 target...
    ...skipped 1 target...
    Not all Boost libraries built properly.
    theo7@George:/usr/include/boost_1_35_0$

  15. #15
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Par défaut
    Citation Envoyé par theo7 Voir le message
    Une fosi boost 1.35 décompresser dans mon /usr/include
    Pourquoi tu le décompresses là ? C'est une drôle d'idée mais bon...

    Citation Envoyé par theo7 Voir le message
    je lance bjam dans le dossier de mon nouveau boost, pas d'erreur.
    Après je lance ./configure puis make
    Soit tu utilises bjam, soit tu utilises configure+make mais les deux à la suite c'est sans doute un de trop.

    Citation Envoyé par theo7 Voir le message
    make me retourne une erreur : (...)
    A vue de nez et un peu à l'instinct je dirais qu'il te manque libbzip-dev (ou un paquetage dans ce style) nécessaire pour compiler Boost.Iostreams.

    Je suggère :
    . décompresse l'archive de boost dans un répertoire dans ton home
    . utilise bjam pour compiler uniquement les bibliothèques dont tu as besoin, par exemple (de mémoire) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sudo bjam --toolset=gcc --build-type=complete --with-system --with-thread --with-regex stage
    MAT.

  16. #16
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Par défaut
    Tiens concernant Boost.Iostreams et bzip : In Case of Build Errors
    Je te conseille de lire tout le "Getting Started"...

    MAT.

  17. #17
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    79
    Détails du profil
    Informations personnelles :
    Âge : 31
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 79
    Par défaut
    Merci
    On peut voir ce que l'on doit lier dans le repertoire /usr/local/lib .

  18. #18
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Par défaut
    Pourquoi vous vous faites chier à compiler quoi que ce soit ?
    Utilisez des binaires pré-compilés, gain de temps non négligeable...

  19. #19
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Par défaut
    Citation Envoyé par loufoque Voir le message
    Pourquoi vous vous faites chier à compiler quoi que ce soit ?
    Utilisez des binaires pré-compilés, gain de temps non négligeable...
    Parce que les binaires pour la 1.35 ne sont pas encore disponibles sur la majorité des plateformes (par ex cygwin en est encore à la 1.33.1), parce que bien souvent il faut configurer quelques détails par-ci par-là (par ex BOOST_REGEX_MATCH_EXTRA dans Boost.Regex), parce que ça ne prend pas tant de temps que ça au final quand on sait exactement comment et qu'on a la ligne de commande toute prête, parce que c'est le premier pas à faire pour pouvoir contribuer, etc..

    MAT.

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

Discussions similaires

  1. [RegEx] Probleme regex pour changer ..
    Par newbie_php dans le forum Langage
    Réponses: 5
    Dernier message: 09/04/2010, 15h00
  2. Probleme avec boost::iostreams
    Par vandamme dans le forum Boost
    Réponses: 1
    Dernier message: 23/02/2009, 08h52
  3. Probleme regex Matcher
    Par Samildanach dans le forum Langage
    Réponses: 1
    Dernier message: 07/11/2008, 13h34
  4. probleme Regex (expressions regulieres)
    Par lemagicien dans le forum C#
    Réponses: 4
    Dernier message: 22/04/2008, 16h23
  5. probleme avec boost et devcpp
    Par Krost dans le forum Dev-C++
    Réponses: 12
    Dernier message: 02/01/2005, 19h11

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