[英]How do I get PCRE to work with C++?
這是一個新手問題,但我希望我能盡可能清楚地表達我的問題。
我正在嘗試用C ++進行模式匹配。
我從這里下載了WinRE版本的PCRE,並將下載的pcre3.dll和pcreposix3.dll文件放入Dev-CPP的lib文件夾(我使用的是Bloodshed Dev-C ++ 4.9.9 IDE)。
我還下載了一個pcrecpp.h頭文件並將它放在同一個目錄中我正在編寫以下代碼(實際上並沒有寫。我正在處理來自PDF教程的示例代碼,名為PCRE-Perl Compatible Regular Express)。
但我無法讓它發揮作用。 代碼如下:
#include <iostream>
#include <string>
#include <pcrecpp.h>
using namespace std;
int main()
{
int i;
string s;
pcrecpp::RE re("(\\w+):(\\d+)");
if (re.error().length() > 0) {
cout << "PCRE compilation failed with error: " << re.error() << "\n";
}
if (re.PartialMatch("root:1234", &s, &i))
cout << s << " : " << i << "\n";
}
當我編譯代碼時,Dev-C ++給了我很多錯誤,包括:“`pcrecpp'尚未聲明”和“RE”未聲明。
我該如何處理下載的文件並修復我的問題? 或者有什么明顯的東西讓我失蹤?
如果為#include
指定帶有尖括號( <>
)的文件,那么只要編譯器知道它們,編譯器就只會在外部庫的位置中查找該標題。
如果您改為使用引號( ""
),則編譯器還將查找當前項目的位置,該項目通常包括當前目錄。
您當前問題的快速解決方法是使用
#include "pcrecpp.h"
另一種方法是告訴編譯器它可以在哪里找到PCRE庫的頭文件。
您必須告訴編譯器它可以在哪里找到PCRE庫的頭文件。 如何做到這一點不同於構建系統到構建系統,但如果您使用的是IDE,那么應該有一個選項來指定“包含目錄”。 您可以在此處添加PCRE標頭的目錄(帶完整路徑)。
作為旁注:當編譯器為您提供大量錯誤和警告時,請始終先修復第一個錯誤和警告。 我猜想在這種情況下它就像“無法找到標題:pcrecpp.h”。
通常的情況是,如果編譯器在遇到問題后嘗試繼續,則會發現更多問題,這些問題是第一個問題的后續問題。 當第一個問題得到解決時,這些問題也會神奇地消失。
cout << “PCRE compilation failed with error: “ << re.error() << “\n”;
我剛剛復制了你的代碼並嘗試編譯它。 我收到了與您報告的相同的錯誤。 問題是你輸入cout的字符串沒有正確啟動/結束。 你應該使用真正的“而不是看起來像雙引號(”)的標記,但事實並非如此。 如果你修復它,你的代碼應該編譯沒有任何錯誤。
g ++ -lpcrecpp ......
你需要在g ++命令中添加'-lpcrecpp'
你已經包括在內
#include <pcrecpp.h>
要檢查的第一點但是在代碼的inlcude路徑中是文件。 你下載了可安裝的嗎? 檢查機器上的安裝位置。
第二點是檢查是否定義了庫路徑,以便在編譯和鏈接期間解析它們。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.