如何让PCRE与C ++一起使用?

时间:2010-10-13 09:19:59

标签: c++ pcre

这是一个新手问题,但我希望我能尽可能清楚地表达我的问题。

我正在尝试在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”未声明。

我应该如何处理下载的文件并解决我的问题?或者有什么明显的东西让我失踪?

4 个答案:

答案 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路径中。你下载了可安装的吗?检查机器上的安装位置。

第二点是检查是否定义了库路径,以便在编译和链接期间解析它们。