2011-01-05 5 views
0

Ich habe ein Problem mit der Boost-Bibliothek in Dev C++, speziell die Regex. Ich habe versucht, ihr Beispiel Code:Verknüpfung Problem mit Dev C++ und Boost :: Regex

 
#include string 
#include iostream 

using namespace boost; 

regex expression("([0-9]+)(\\-| |$)(.*)"); 

// process_ftp: 
// on success returns the ftp response code, and fills 
// msg with the ftp response message. 
int process_ftp(const char* response, std::string* msg) 
{ 
    cmatch what; 
    if(regex_match(response, what, expression)) 
    { 
     // what[0] contains the whole string 
     // what[1] contains the response code 
     // what[2] contains the separator character 
     // what[3] contains the text message. 
     if(msg) 
     msg->assign(what[3].first, what[3].second); 
     return std::atoi(what[1].first); 
    } 
    // failure did not match 
    if(msg) 
     msg->erase(); 
    return -1; 
} 

Der Fehler Es ist mir zu werfen ist:

[Linker Fehler] undefined reference to `boost :: re_detail :: get_mem_block()‘

Zusammen mit vielen anderen Linker-Fehler. Ich kann nicht den Weg finden, es zu reparieren, selbst wenn ich nach diesem Problem suche, bin ich auf andere Compiler gestoßen. Ich habe bereits die Include-Pfade zum Projekt für die anderen Header-Dateien hinzugefügt.

Wie soll ich das umgehen? Und wenn ich etwas auf dem Weg DevC++ kompilieren muss, ist von der Registerkarte Dateien oder die Parameter ein? Und auch, auf nicht eine zu unterschiedliche Randnotiz, kann mir jemand eine gute Anleitung oder Seite über Compiler und/oder etwas, das mir helfen könnte empfehlen? (da ich auf der C++ Seite nicht viel finden konnte).

Danke.

+0

(dies nichts mit dem Problem zu tun hat, aber ...) Dev-C++ verwendet einen Steinzeit-Compiler (GCC 3.4.5, wenn ich nicht falsch), zusammen mit einer Steinzeit-MinGW-Version. Die IDE selbst ist mittlerweile auch steinzeitlich, also verbessere diese, wenn du die Chance hast, du wirst es nicht bereuen ';)'. – rubenvb

+0

Ich habe gerade die letzte Version von MinGW heruntergeladen. Danke – Filgera

Antwort

0

Soweit ich weiß, sollten Sie die Boost Regex-Bibliothek erstellen und darauf verlinken. Ich nehme an, Sie verlinken nicht gegen die Regex-Bibliothek.

Sie können Anweisungen finden auf den Aufbau der Bibliothek hier: http://www.boost.org/doc/libs/1_45_0/libs/regex/doc/html/boost_regex/install.html

+0

Danke dafür, nach dieser Seite habe ich die letzte Version von MinGW mit G ++ und mingw32-make installiert. Nun, das ist wahrscheinlich eine blöde Frage, aber wenn ich dem G ++ - Makefile wie dem Web folge, gebe ich "mingw32-make -fgcc.mak" ein und erhalte einen "Fehler 1", weil "Syntax falsch ist". Ich benutze wahrscheinlich die falsche make-Datei, oder? – Filgera

+0

@Filgera Nicht sicher, ich würde vermuten, dass Sie das falsche make tool verwenden (mingw32-make). Wahrscheinlich enthält gcc.mak tatsächlich eine Syntax, die mingw32-make nicht unterstützt. Du könntest "make -fgcc.mak" versuchen oder deinen Build mit bjam machen. Anweisungen finden Sie unter: http://www.boost.org/doc/libs/1_45_0/more/getting_started/unix-variants.html. – ds27680