2013-07-12 47 views
2

我在Code :: blocks中使用PCRE時遇到了一些問題。我已經從here下載了PCRE。並做了所有步驟here。但是我在執行過程中遇到了pcr3.dll丟失的錯誤。如何讓PCRE與Code :: blocks正常工作?

程序無法啓動,因爲您的 計算機缺少pcre3.dll。嘗試重新安裝程序來解決這個問題。

My code

#include <iostream> 
#include <regex.h> 
using namespace std; 


int main(){ 

regex_t reg; 

string pattern = "[^tpr]{2,}"; 
string str = "topcoder"; 

regmatch_t matches[1]; 

regcomp(&reg,pattern.c_str(),REG_EXTENDED|REG_ICASE); 

if (regexec(&reg,str.c_str(),1,matches,0)==0) { 
     cout << "Match " ; 
     cout << str.substr(matches[0].rm_so,matches[0].rm_eo-matches[0].rm_so) ; 
     cout << " found starting at: " ; 
     cout << matches[0].rm_so ; 
     cout << " and ending at " ; 
     cout << matches[0].rm_eo ; 
     cout << endl; 
    } else { 
     cout << "Match not found."; 
     cout << endl; 
} 
regfree(&reg); 

    return 0; 
} 

我不知道如何解決這個問題,任何想法?

PS:上述代碼取自this教程。

+0

只需仔細檢查,但是您是否在您鏈接的帖子中閱讀了[此評論](http://stackoverflow.com/questions/8230905/regex-h-for-windows#comment10140086_8231041)?您收到的錯誤消息讓我想知道(a)pcr3.dll在您的文件系統中的位置以及(b)您是否在Code :: Blocks的設置中添加了必要的include和lib路徑。 (也就是說,你是否提供了Code :: Blocks和包含'pcr3.dll'的目錄的路徑?) – 2013-07-12 01:50:55

+0

是的,我做過。我在搜索目錄中鏈接了包含'pcr3.dll'的文件夾。 – Quixotic

+0

嗯...你是否也添加了'pcre3.dll'到庫鏈接列表? (我沒有使用Code :: Blocks,但它會是[本教程中的步驟5B](http://www.learncpp.com/cpp-tutorial/a3-using-libraries-with-codeblocks/)。)這聽起來像也許你將包含'pcre3.dll'的目錄添加到鏈接程序搜索路徑(這很好),但未能指定庫本身。您也可以嘗試在forums.codeblocks.org上提問。 – 2013-07-12 03:32:10

回答

1

將DLL複製到與您正在運行的可執行文件相同的目錄中。如果這樣的話,你沒有正確安裝DLL,或者至少不能以一般的程序找到它。查看DLL Search Order的文檔,瞭解如何讓系統找到DLL。尤其是,您需要知道有一個鏈接器和一個加載器(又名動態/運行時鏈接器/加載器),但其中只有一個在CodeBlocks內部配置!