PDA

View Full Version : [C++] Problemi con le regular expression (libreria boost)


kurtcobain85na
23-11-2011, 16:31
Salve ragazzi, ho provato ad eseguire questo programma (con eclipse) ma non riesco a compilarlo, ho installato le librerie boost ma il programma non parte

#include <boost/regex.hpp>
#include <string>
int main()
{
boost::regex pattern ("ao");
std::string stringa ("Paolo Elefante");
if (boost::regex_search (stringa, pattern)
printf ("found\n");
else
printf("not found\n");
return 0;
}

GByTe87
23-11-2011, 16:34
Le boost sono installate correttamente? Hai configurato il linker affinchè possa trovare libboost_regex?

lishi
23-11-2011, 22:45
Boost è quasi completamente composto da librerie header (che non hanno bisogno di librerie compilate a parte)

Tranne ovviamente alcune come Boost regex.

Oltre a ovviamente dover postare il tuo errore di compilazione hai 2 possibilità

1) compilare boost, non banale
2) usare i precompilati (cerca boost pro su internet)

Se non hai chiaro quello che ho scritto sopra devi cercare documentazione sul compiler / linker e capire cosa sono

kurtcobain85na
24-11-2011, 09:10
Buongiorno a tutti, dopo aver scritto quel semplice programma nel make file ho inserito le seguenti istruzioni

CINCLUDES += -I"$(BOOST_SDK_INC)"

LIBSDIR += -L"$(BOOST_SDK_LIB)"

dove nel file common.mk

# BOOST SDK
BOOST_SDK_PATH = $(IODEV_VOB)/BOOST_SDK/boost_1_44_0
BOOST_SDK_LIB = $(BOOST_SDK_PATH)/lib
BOOST_SDK_INC = $(BOOST_SDK_PATH)/include
export BOOST_SDK_PATH
#BOOST_LIBS =




dopo aver compilato il programma mi esce questo erroe:

.//program.obj: In function `boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::assign(char const*, char const*, unsigned int)':
/vobs/IO_Developments/BOOST_SDK/boost_1_44_0/include/boost/regex/v4/basic_regex.hpp:425: undefined reference to `boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::do_assign(char const*, char const*, unsigned int)'
.//program.obj: In function `perl_matcher':
/vobs/IO_Developments/BOOST_SDK/boost_1_44_0/include/boost/regex/v4/perl_matcher.hpp:371: undefined reference to `boost::re_detail::perl_matcher<__gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::construct_init(boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > > const&, boost::regex_constants::_match_flags)'
.//program.obj: In function `bool boost::regex_search<__gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >(__gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, __gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > > const&, boost::regex_constants::_match_flags)':
/vobs/IO_Developments/BOOST_SDK/boost_1_44_0/include/boost/regex/v4/regex_search.hpp:145: undefined reference to `boost::re_detail::perl_matcher<__gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::find()'
.//program.obj: In function `save_state_init':
/vobs/IO_Developments/BOOST_SDK/boost_1_44_0/include/boost/regex/v4/perl_matcher_non_recursive.hpp:107: undefined reference to `boost::re_detail::get_mem_block()'
.//program.obj: In function `boost::cpp_regex_traits<char>::transform(char const*, char const*) const':
/vobs/IO_Developments/BOOST_SDK/boost_1_44_0/include/boost/regex/v4/cpp_regex_traits.hpp:908: undefined reference to `boost::re_detail::cpp_regex_traits_implementation<char>::transform(char const*, char const*) const'
.//program.obj: In function `boost::cpp_regex_traits<char>::transform_primary(char const*, char const*) const':
/vobs/IO_Developments/BOOST_SDK/boost_1_44_0/include/boost/regex/v4/cpp_regex_traits.hpp:912: undefined reference to `boost::re_detail::cpp_regex_traits_implementation<char>::transform_primary(char const*, char const*) const'
.//program.obj: In function `boost::re_detail::cpp_regex_traits_implementation<char>::error_string(boost::regex_constants::error_type) const':
/vobs/IO_Developments/BOOST_SDK/boost_1_44_0/include/boost/regex/v4/cpp_regex_traits.hpp:442: undefined reference to `boost::re_detail::get_default_error_string(boost::regex_constants::error_type)'
/vobs/IO_Developments/BOOST_SDK/boost_1_44_0/include/boost/regex/v4/cpp_regex_traits.hpp:444: undefined reference to `boost::re_detail::get_default_error_string(boost::regex_constants::error_type)'
.//program.obj: In function `void boost::re_detail::raise_error<boost::regex_traits_wrapper<boost::regex_traits<char, boost::cpp_regex_traits<char> > > >(boost::regex_traits_wrapper<boost::regex_traits<char, boost::cpp_regex_traits<char> > > const&, boost::regex_constants::error_type)':
/vobs/IO_Developments/BOOST_SDK/boost_1_44_0/include/boost/regex/pattern_except.hpp:75: undefined reference to `boost::re_detail::raise_runtime_error(std::runtime_error const&)'
.//program.obj: In function `boost::re_detail::perl_matcher<__gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::extend_stack()':
/vobs/IO_Developments/BOOST_SDK/boost_1_44_0/include/boost/regex/v4/perl_matcher_non_recursive.hpp:213: undefined reference to `boost::re_detail::get_mem_block()'
.//program.obj: In function `boost::re_detail::perl_matcher<__gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::match_match()':
/vobs/IO_Developments/BOOST_SDK/boost_1_44_0/include/boost/regex/v4/perl_matcher_non_recursive.hpp:973: undefined reference to `boost::match_results<__gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > >::maybe_assign(boost::match_results<__gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > > const&)'
.//program.obj: In function `boost::re_detail::perl_matcher<__gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::unwind_extra_block(bool)':
/vobs/IO_Developments/BOOST_SDK/boost_1_44_0/include/boost/regex/v4/perl_matcher_non_recursive.hpp:1117: undefined reference to `boost::re_detail::put_mem_block(void*)'
.//program.obj: In function `~save_state_init':
/vobs/IO_Developments/BOOST_SDK/boost_1_44_0/include/boost/regex/v4/perl_matcher_non_recursive.hpp:115: undefined reference to `boost::re_detail::put_mem_block(void*)'
.//program.obj: In function `boost::re_detail::perl_matcher<__gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::find_imp()':
/vobs/IO_Developments/BOOST_SDK/boost_1_44_0/include/boost/regex/v4/perl_matcher_common.hpp:292: undefined reference to `boost::re_detail::verify_options(unsigned int, boost::regex_constants::_match_flags)'
collect2: ld returned 1 exit status
make: *** [wizard] Error 1

secondo voi devo aggiungere qualcosa nel makefile?