这是一个新手问题,但我希望我能尽可能清楚地表达我的问题。
我正在尝试在C ++中进行模式匹配。
我从here下载了PCRE的Win32版本,我已将下载的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”未声明。
我应该如何处理下载的文件并解决我的问题?或者有什么明显的东西让我失踪?
答案 0 :(得分:6)
如果使用尖括号(#include
)指定<>
的文件,那么只要编译器知道,编译器将仅在外部库的位置中查找该标头。它们。
如果您改为使用引号(""
),那么编译器还会查找当前项目的位置,该项目通常包括当前目录。
您当前问题的快速解决方法是使用
#include "pcrecpp.h"
另一种方法是告诉编译器它可以在哪里找到PCRE库的标题。
您必须告诉编译器它可以在哪里找到PCRE库的头文件。
如何做到这一点不同于构建系统到构建系统,但如果您使用的是IDE,那么应该有一个选项来指定“包含目录”。您可以在此处添加PCRE标头的目录(带完整路径)。
作为旁注:当编译器为您提供大量错误和警告时,请始终先修复第一个错误和警告。我想在这种情况下,它就像“无法找到标题:pcrecpp.h” 通常的情况是,如果编译器在遇到问题后尝试继续,则会发现更多问题,这些问题是第一个问题的后续问题。当第一个问题得到解决时,这些问题也会神奇地消失。
答案 1 :(得分:2)
g ++ -lpcrecpp ......
您需要将'-lpcrecpp'添加到g ++命令
答案 2 :(得分:2)
cout << “PCRE compilation failed with error: “ << re.error() << “\n”;
我刚刚复制了你的代码并尝试编译它。我收到了与您报告的相同的错误。 问题是你输入cout的字符串没有正确启动/结束。你应该使用真正的&#34;而不是看起来像双引号(&#34;)的标记,但事实并非如此。如果你修复它,你的代码应该编译没有任何错误。
答案 3 :(得分:0)
您已包含
#include <pcrecpp.h>
要检查的第一点但是文件位于代码的inlcude路径中。你下载了可安装的吗?检查机器上的安装位置。
第二点是检查是否定义了库路径,以便在编译和链接期间解析它们。