Ошибка компиляции C ++ - неопределенные ссылки с использованием библиотеки PCRE - PullRequest
2 голосов
/ 06 апреля 2011

У меня проблемы с компиляцией кода для проверки правильности установки библиотеки 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.

Это установщик пакета DevPak: http://www.mediafire.com/?zb3wc6q07sddsac я использовал для установки библиотеки (pcre-6.4.1)

Мне нужны рекомендации, которые позволили бы мне правильно установить эту библиотеку (чтобы я мог работать с регулярными выражениями).

Если нет, то я хотел бы получить ссылку на библиотеку c ++ для поддержки регулярных выражений, которую легко установить на этот Dev-C ++ или CodeBlocks.

Спасибо за вашу помощь!

EDIT: Спасибо за вашу помощь, решил эту проблему, проверив эту тему Как мне заставить PCRE работать с C ++?

и ответы тупых кодеров в обеих темах.

1 Ответ

0 голосов
/ 06 апреля 2011

У вас есть проблемы с именами?Есть ли в pcre.h что-нибудь подобное?

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

Если не обернуть этим ваш #include, он сообщит C ++, что он вызывает функции C

...