【问题标题】:Compiling error C++ - undefined references using PCRE library编译错误 C++ - 使用 PCRE 库的未定义引用
【发布时间】:2011-07-30 22:21:32
【问题描述】:

我在编译代码以测试 PCRE 库是否安装正确时遇到问题。

#include <string> 
#include <iostream> 
#include <pcre.h> 



int main (int argc, char *argv[]) 

{ 
    const char *error; 
    int   erroffset; 
    pcre *re; 
    int   rc; 
    int   i; 
    int   ovector[100]; 

    char *regex = "From:([^@]+)@([^\r]+)"; 
    char str[]  = "From:regular.expressions@example.com\r\n"\ 
                  "From:exddd@43434.com\r\n"\ 
                  "From:7853456@exgem.com\r\n"; 

    re = pcre_compile (regex,          /* the pattern */ 
                       PCRE_MULTILINE, 
                       &error,         /* for error message */ 
                       &erroffset,     /* for error offset */ 
                       0);             /* use default character tables */ 
    if (!re) 
    { 
        printf("pcre_compile failed (offset: %d), %s\n", erroffset, error); 
        return -1; 
    } 

    unsigned int offset = 0; 
    unsigned int len    = strlen(str); 
    while (offset < len && (rc = pcre_exec(re, 0, str, len, offset, 0, ovector, sizeof(ovector))) >= 0) 
    { 
        for(int i = 0; i < rc; ++i) 
        { 
            printf("%2d: %.*s\n", i, ovector[2*i+1] - ovector[2*i], str + ovector[2*i]); 
        } 
        offset = ovector[1]; 
    } 
    return 1; 
} 

返回的错误是:

[Linker error] undefined reference to `_imp__pcre_compile' 

[Linker error] undefined reference to `_imp__pcre_exec' 

我很确定我在做一些愚蠢的事情。

目前使用的是 IDE Dev-C++ ,使用 Dev Package manager 安装包。

这是 DevPak 包安装程序: http://www.mediafire.com/?zb3wc6q07sddsac 我用来安装库(pcre-6.4.1)

我需要一些指导来正确安装这个库(这样我就可以使用正则表达式)。

如果没有,我希望引用一个 c++ 库来支持易于在此 Dev-C++ 或 CodeBlocks 上安装的正则表达式。

感谢您的帮助!

编辑: 感谢您的帮助,通过检查此线程解决了这个问题How do I get PCRE to work with C++?

两个线程中的愚蠢编码人员响应。

【问题讨论】:

  • 什么是命令行做链接?
  • 您是否尝试设置路径和库依赖项?
  • 你链接的标志是否正确(例如g++ whatever -lprce)?
  • 除了我提到的,我什么都没做。如何设置路径和库依赖项以及需要将它们设置为什么?

标签: c++ regex pcre linker-errors


【解决方案1】:

您是否遇到过名称混淆问题? pcre.h里面有这样的东西吗?

extern "C" {
   // declarations of c functions for c++
 }

如果没有用它包装你的#include,它会通知 C++ 它正在调用 C 函数

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-15
    • 2013-12-25
    相关资源
    最近更新 更多