Эксперт
  
Профиль
Группа: Завсегдатай
Сообщений: 1100
Регистрация: 27.9.2006
Репутация: нет Всего: 12
|
с вики код Код | #include <boost/regex.hpp> #include <vector> #include <string> // Пример программы разбора URL int main(int argc, char** argv) { // Проверка на число параметров if (argc < 2) return 0; // Контейнер для значений std::vector<std::string> values; // Выражение для разбора boost::regex expression( // proto host port "^(\?:([^:/?#]+)://)\?(\\w+[^/?#:]*)(\?::(\\d+))\?" // path file parameters "(/\?(\?:[^?#/]*/)*)\?([^?#]*)\?(\\\?(.*))\?" ); // Формирование исходной строки для разбора (берется из командной строки) std::string src(argv[1]); // Разбор и заполнение контейнера if (boost::regex_split(std::back_inserter(values), src, expression)) { // Вывод результата const char* names[] = {"Protocol", "Host", "Port", "Path", "File", "Parameters", NULL}; for (int i = 0; names[i]; i++) printf("%s: %s\n", names[i], values[i].c_str()); } return 0; }
|
компилил g++ руками компилил bjam JamrootКод | exe hello : test.cpp ;
|
Код | ~/cpp/boost$ bjam ...found 11 targets... ...updating 2 targets... gcc.compile.c++ bin/gcc/debug/test.o gcc.link bin/gcc/debug/hello bin/gcc/debug/test.o: In function `boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::assign(char const*, char const*, unsigned int)': /usr/include/boost/regex/v4/basic_regex.hpp:255: undefined reference to `boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::do_assign(char const*, char const*, unsigned int)' bin/gcc/debug/test.o: In function `perl_matcher': /usr/include/boost/regex/v4/perl_matcher.hpp:335: 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)' bin/gcc/debug/test.o: In function `boost::cpp_regex_traits<char>::transform(char const*, char const*) const': /usr/include/boost/regex/v4/cpp_regex_traits.hpp:876: undefined reference to `boost::re_detail::cpp_regex_traits_implementation<char>::transform(char const*, char const*) const' bin/gcc/debug/test.o: In function `boost::cpp_regex_traits<char>::transform_primary(char const*, char const*) const': /usr/include/boost/regex/v4/cpp_regex_traits.hpp:880: undefined reference to `boost::re_detail::cpp_regex_traits_implementation<char>::transform_primary(char const*, char const*) const' bin/gcc/debug/test.o: In function `save_state_init': /usr/include/boost/regex/v4/perl_matcher_non_recursive.hpp:96: undefined reference to `boost::re_detail::get_mem_block()' bin/gcc/debug/test.o: 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()': /usr/include/boost/regex/v4/perl_matcher_common.hpp:468: 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&)' bin/gcc/debug/test.o: In function `boost::re_detail::cpp_regex_traits_implementation<char>::error_string(boost::regex_constants::error_type) const': /usr/include/boost/regex/v4/cpp_regex_traits.hpp:424: undefined reference to `boost::re_detail::get_default_error_string(boost::regex_constants::error_type)' /usr/include/boost/regex/v4/cpp_regex_traits.hpp:426: undefined reference to `boost::re_detail::get_default_error_string(boost::regex_constants::error_type)' bin/gcc/debug/test.o: 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)': /usr/include/boost/regex/pattern_except.hpp:68: undefined reference to `boost::re_detail::raise_runtime_error(std::runtime_error const&)' bin/gcc/debug/test.o: 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()': /usr/include/boost/regex/v4/perl_matcher_non_recursive.hpp:186: undefined reference to `boost::re_detail::get_mem_block()' bin/gcc/debug/test.o: In function `unsigned int boost::regex_grep<boost::re_detail::split_pred<std::back_insert_iterator<std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >, 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> > >, char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >(boost::re_detail::split_pred<std::back_insert_iterator<std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >, 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> > >, __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)': /usr/include/boost/regex/v4/regex_grep.hpp:63: 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()' /usr/include/boost/regex/v4/regex_grep.hpp:48: 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()' bin/gcc/debug/test.o: 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)': /usr/include/boost/regex/v4/perl_matcher_non_recursive.hpp:965: undefined reference to `boost::re_detail::put_mem_block(void*)' bin/gcc/debug/test.o: In function `~save_state_init': /usr/include/boost/regex/v4/perl_matcher_non_recursive.hpp:104: undefined reference to `boost::re_detail::put_mem_block(void*)' bin/gcc/debug/test.o: 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()': /usr/include/boost/regex/v4/perl_matcher_common.hpp:279: undefined reference to `boost::re_detail::verify_options(unsigned int, boost::regex_constants::_match_flags)' collect2: выполнение ld завершилось с кодом возврата 1
"g++" -o "bin/gcc/debug/hello" -Wl,--start-group "bin/gcc/debug/test.o" -Wl,--end-group -g
...failed gcc.link bin/gcc/debug/hello... ...failed updating 1 target... ...updated 1 target...
|
ОС Ubuntu 8 04 / boost из репозитория пакетов убунты поставлен что не так ? как компилить с boost ?
--------------------
Пусть популярную музыку слушают те, среди кого она популярна
|