Как я могу использовать библиотеку Boost :: regex.hpp в C ++? - PullRequest
5 голосов
/ 11 июня 2010

Я пытался использовать библиотеку Boost, но мне не удалось увидеть мой код:

#include "listy.h"
#include <boost/regex.hpp>
using namespace boost;

ListyCheck::ListyCheck() {

}

ListyCheck::~ListyCheck() {

}

bool ListyCheck::isValidItem(std::string &__item) {
    regex e("(\\d{4}[- ]){3}\\d{4}");

    return regex_match(__item, e);
}

Когда я пытался скомпилировать его, я получаю следующие сообщения:

/ USR / включать / усиление / регулярное выражение / v4 / regex_match.hpp: 50: неопределенная ссылка на `Повышение :: re_detail :: perl_matcher <__ gnu_cxx :: __ normal_iterator, std :: allocator>>, станд :: распределитель, std :: allocator>>>>, boost :: regex_traits>

:: матч ()

/ USR / включать / усиление / регулярное выражение / v4 / basic_regex.hpp: 425: неопределенная ссылка на `boost :: basic_regex>

:: do_assign (char const *, char const *, unsigned int) '

/ USR / включать / усиление / регулярное выражение / v4 / perl_matcher.hpp: 366: неопределенная ссылка на `Повышение :: re_detail :: perl_matcher <__ gnu_cxx :: __ normal_iterator, std :: allocator>>, станд :: распределитель, std :: allocator>>>>, boost :: regex_traits>

:: construct_init (boost :: basic_regex>> Const и, повышение :: regex_constants :: _ match_flags) '

и т.д ...

Ответы [ 3 ]

10 голосов
/ 11 июня 2010

Вам необходимо указать ссылку на libboost_regex.Добавьте -lboost_regex к переключателю компилятора, если вы используете gcc.

4 голосов
/ 11 июня 2010

Это ошибки компоновщика. Библиотека регулярных выражений Boost не является библиотекой только для заголовков, как shared_ptr (например) - вам нужно ссылаться на .a или .lib или любую другую двоичную библиотеку.

1 голос
/ 11 июня 2010

Вы должны связать с boost_regex.

...