Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Программирование под Unix/Linux > [C++] Регулярные выражения. Установка PCRE


Автор: Dakotta 20.9.2010, 12:27
Здравствуйте! Помогите, пожалуйста, собрать проект C++ с использованием регулярных выражений.
Вот нашла пример, установила библиотеку <pcre.h>
Код

#include <iostream>
#include <pcre.h>
#include <stdlib.h>
#include <string.h>
#include <vector>
using namespace std;
int main(){
 
   char pattern[] = "[es]"; // шаблон (регулярное выражение)
   char str[] = "test";  // разбираемая строка
 
   // создание таблицы перекодировки для локали ru
   const unsigned char *tables = NULL;         
   setlocale (LC_CTYPE, (const char *) "ru.");
   tables = pcre_maketables();
 
   // компилирование регулярного выражения во внутреннее представление
   pcre *re;
   int options = 0;
   const char *error;
   int erroffset;
   re = pcre_compile((char *) pattern, options, &error, &erroffset, NULL);
 
   if (!re){ // в случае ошибки компиляции
      cout << "Failed\n";
   }
   else{
      int count = 0;
      int ovector[30];
 
      count = pcre_exec(re, NULL, (char *) str, strlen(str), 0, 0, ovector, 30);
      // выполнение сопоставления с образцом
      if (!count){ // если нет совпадений
         cout << "No match\n";
      }
      else{
         //вывод пар {начало, конец} совпадения
         for (int c = 0; c < 2 * count; c += 2){
            if (ovector[c] < 0){ // или <unset> для несопоставившихся подвыражений
               cout << "<unset>\n";
            }
            else{
               cout << ovector[c] << "/" << ovector[c + 1] << "\n";
            }
         }
      }
   }
 
   return 0;
}

Программа компилируется, но при запуске возникают ошибки:
Код

Building in directory: /home/dakotta/vkr/Debug/Debug/src
make vkr
Invoking libtool for linking
libtool: link: g++ -g -O0 -o vkr main.o 
main.o: In function `main':
main.cc:34: undefined reference to `pcre_maketables'
main.cc:41: undefined reference to `pcre_compile'
main.cc:50: undefined reference to `pcre_exec'

collect2: ld returned 1 exit status
make: *** [vkr] Error 1
Завершено неуспешно
Всего заняло времени: 1 секунд


Подскажите, пожалуйста, как это можно решить? Может быть какие-то библиотеки доставлять или еще что-нибудь? Только если есть чем помочь, будьте так добры, объясните как можно доходчивее, я только учусь smile
Заранее спасибо!

Автор: djamshud 20.9.2010, 12:46
Нужно слинковаться с этой библиотекой. Сделать это можно в натсройках проекта вашей IDE. Или используется просто какая-то система сборки?

Но вообще, если зрит в корень, то

Код

g++ -L/path/to/pcre -Wl,-rpath,/path/to/pcre -lpcre ....

Автор: Dakotta 20.9.2010, 15:13
djamshud, я пользуюсь средой Anjuta. Порылась там в настройках, ничего подобного не обнаружила.
прогуглила пол дня, тоже ничего не нашла, может быть не там искала, конечно.
Может быть кто-нибудь сталкивался и знает как решить эту проблему? Расскажите, как подключить эту библиотеку!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)