2011-01-05 68 views
0

我在使用Dev C++中的Boost庫時遇到問題,特別是正則表達式。Dev C++和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; 
} 

它拋出我的錯誤是::

[鏈接錯誤]未定義參考`的boost :: re_detail :: get_mem_block()」

我使用他們的示例代碼嘗試

除了許多其他鏈接器錯誤。我似乎無法找到解決這個問題的方法,即使在尋找我遇到過的其他編譯器的問題時也是如此。我已經將include路徑添加到其他頭文件的項目中。

我該如何解決它?如果我不得不在DevC++編譯的方式上從文件選項卡或參數文件中更改某些內容? 而且,在一個不太方面的方面,有人可以推薦我一個關於編譯器和/或可以幫助我的好的指南或頁面嗎? (因爲我在C++頁面找不到太多東西)。

感謝。

+0

(這無關你的問題,但...)開發 - C++採用了石器時代的編譯器(GCC 3.4.5如果我沒有錯),以及石器時代的MinGW版本。 IDE本身現在也是石器時代,所以當你有機會看到升級這些,你不會後悔'')'。 – rubenvb 2011-01-05 09:36:56

+0

我確實現在下載了MinGW的最新版本。謝謝 – Filgera 2011-01-05 23:22:48

回答

0

據我所知,你應該建立boost正則表達式庫並鏈接到它。我假設你沒有鏈接到正則表達式庫。

您在這裏可以找到建庫的指令:http://www.boost.org/doc/libs/1_45_0/libs/regex/doc/html/boost_regex/install.html

+0

非常感謝,在那個頁面之後,我使用G ++和mingw32-make安裝了MinGW的最新版本。現在這可能是一個愚蠢的問題,但遵循G ++的makefile,就像web所說的那樣,我輸入「mingw32-make -fgcc.mak」,因爲「語法不正確」,我得到一個「錯誤1」。我可能使用了錯誤的make文件,對吧? – Filgera 2011-01-05 23:22:17

+0

@Filgera不知道,我會懷疑你使用了錯誤的make工具(mingw32-make)。可能gcc.mak包含mingw32-make不支持的語法。你可以嘗試「make -fgcc.mak」或者使用bjam進行構建。有關說明,請參閱:http://www.boost.org/doc/libs/1_45_0/more/getting_started/unix-variants.html。 – ds27680 2011-01-07 08:40:03