tutorials.de Buch-Aktion 05/2012
Like Tree1Danke
  • 1 Beitrag von deepthroat
ERLEDIGT
JA
ANTWORTEN
2
ZUGRIFFE
467
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Registriert seit
    Dec 2004
    Ort
    Karlsruhe
    Beiträge
    448
    Blog-Einträge
    1
    Hi,

    jedesmal wenn ich etwas mit der Regexlib von Boost compilen will, kommt die Fehlermeldung:

    Code :
    1
    2
    3
    4
    5
    6
    7
    
    /tmp/ccn7HPSy.o: In function `boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::assign(char const*, char const*, unsigned int)':
    testit.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)'
    /tmp/ccn7HPSy.o: In function `boost::re_detail::perl_matcher<__gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::perl_matcher(__gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, __gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::match_results<__gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > >&, boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > > const&, boost::regex_constants::_match_flags, __gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >)':
    testit.cpp:(.text._ZN5boost9re_detail12perl_matcherIN9__gnu_cxx17__normal_iteratorIPKcSsEESaINS_9sub_matchIS6_EEENS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEEC1ES6_S6_RNS_13match_resultsIS6_S9_EERKNS_11basic_regexIcSD_EENS_15regex_constants12_match_flagsES6_[boost::re_detail::perl_matcher<__gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::perl_matcher(__gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, __gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::match_results<__gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > >&, boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > > const&, boost::regex_constants::_match_flags, __gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >)]+0xc1): undefined reference to `boost::re_detail::perl_matcher<__gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::construct_init(boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > > const&, boost::regex_constants::_match_flags)'
    /tmp/ccn7HPSy.o: In function `bool boost::regex_match<__gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >, char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >(__gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, __gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::match_results<__gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > >&, boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > > const&, boost::regex_constants::_match_flags)':
    testit.cpp:(.text._ZN5boost11regex_matchIN9__gnu_cxx17__normal_iteratorIPKcSsEESaINS_9sub_matchIS5_EEEcNS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEEEbT_SD_RNS_13match_resultsISD_T0_EERKNS_11basic_regexIT1_T2_EENS_15regex_constants12_match_flagsE[bool boost::regex_match<__gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >, char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >(__gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, __gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::match_results<__gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > >&, boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > > const&, boost::regex_constants::_match_flags)]+0x46): undefined reference to `boost::re_detail::perl_matcher<__gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::match()'
    collect2: ld gab 1 als Ende-Status zurück

    Ich benutze Ubuntu und habe die Libs per apt-get installiert.(any.hpp kann ich z.B. compilen)
    Hier ist mal der Code den ich versucht habe zu compilen:
    Code :
    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    
    /*
     *
     * Copyright (c) 1998-2002
     * John Maddock
     *
     * Use, modification and distribution are subject to the 
     * Boost Software License, Version 1.0. (See accompanying file 
     * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
     *
     */
     
     /*
      *   LOCATION:    see http://www.boost.org for most recent version.
      *   FILE         partial_regex_match.cpp
      *   VERSION      see <boost/version.hpp>
      *   DESCRIPTION: regex_match example using partial matches.
      */
     
    #include <string>
    #include <iostream>
    #include <boost/regex.hpp>
     
    boost::regex e("(\\d{3,4})[- ]?(\\d{4})[- ]?(\\d{4})[- ]?(\\d{4})");
     
    bool is_possible_card_number(const std::string& input)
    {
       //
       // return false for partial match, true for full match, or throw for
       // impossible match based on what we have so far...
       boost::match_results<std::string::const_iterator> what;
       if(0 == boost::regex_match(input, what, e, boost::match_default | boost::match_partial))
       {
          // the input so far could not possibly be valid so reject it:
          throw std::runtime_error("Invalid data entered - this could not possibly be a valid card number");
       }
       // OK so far so good, but have we finished?
       if(what[0].matched)
       {
          // excellent, we have a result:
          return true;
       }
       // what we have so far is only a partial match...
       return false;
    }
     
    int main(int argc, char* argv[])
    {
       try{
          std::string input;
          if(argc > 1)
             input = argv[1];
          else
             std::cin >> input;
          if(is_possible_card_number(input))
          {
             std::cout << "Matched OK..." << std::endl;
          }
          else
             std::cout << "Got a partial match..." << std::endl;
       }
       catch(const std::exception& e)
       {
          std::cout << e.what() << std::endl;
       }
       return 0;
    }

    weiß jemand woran das liegen könnte?

    mfg pmx
    Geändert von pamax (03.08.07 um 13:06 Uhr)
     

  2. #2
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.168
    Hi.

    Anscheinend hast du vergessen die Boost Regex Bibliothek beim Linken anzugeben.

    Das Kommando zum Linken sollte so aussehen:
    Code :
    1
    
    g++ -o prog prog.o -lboost_regex
    Gruß
    pamax bedankt sich. 
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  3. #3
    Registriert seit
    Dec 2004
    Ort
    Karlsruhe
    Beiträge
    448
    Blog-Einträge
    1
    Hi,

    vielen Dank! Es funktioniert jetzt! Ich hatte zuerst probiert Boost über die pkg-config einzubinden, das hat aber nicht geklappt.

    mfg pmx
     

Ähnliche Themen

  1. Boost Regex
    Von Jacal im Forum C/C++
    Antworten: 2
    Letzter Beitrag: 27.08.10, 14:04
  2. Antworten: 4
    Letzter Beitrag: 16.01.10, 12:50
  3. Antworten: 9
    Letzter Beitrag: 16.03.06, 16:33
  4. Boost Library & Mulithreading
    Von Jens Hibbeler im Forum Borland CBuilder und VCL
    Antworten: 0
    Letzter Beitrag: 07.12.05, 22:17
  5. Hile: Bild nur einmal anzeigen (cookie)
    Von spinchmeister im Forum Javascript & Ajax
    Antworten: 1
    Letzter Beitrag: 18.08.04, 00:40