boost::regex Linker-Problem



  • Hi,
    ich hab gerade mal versucht die Regulären Ausdrücke der Boost Bibliothek zu verwenden und bekomme Fehler. Ich verwende diesen Code (angelehnt an das Boost Manual):

    #include <iostream>
    	using std::cout;
    	using std::endl;
    #include <boost/regex.hpp>
    
    int main() {
    	static const boost::basic_regex<char> e("(\\d{4}[- ]){3}\\d{4}");
    	return 0;
    }
    

    Und bekomme diese Linker-Fehler:

    /tmp/ccOAC4XB.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 gab 1 als Ende-Status zurück
    

    Ich habe Boost nicht selber installiert, sondern benutze das RPM das mit Fedora Core gekommen ist (boost-1.33.1-5) und gcc-4.1.0-3.

    Ist nicht wirklich eine C++ Frage, tut mir Leid, aber ich wusste nicht wohin damit.

    Danke schonmal,
    SR



  • Hallo sr2006,

    ich gehe davon aus, dass irgendwo im RPM eine boost library spuken muss. Wenn nicht, so hast Du das Ganze zunächst zu kompilieren (Bei der Windows Version muss man zunächst kompilieren).

    Diese Library (bei mir heißt sie libboost_regex-vc80-mt-s-1_33_1.lib) muss natürlich in Deinem C++ Projekt bekannt sein. Also solltest Du diese beim Kompilieren mit angeben.

    Gruß
    Norman-Timo


Anmelden zum Antworten