关于boost::regex
大家好!
我在ubuntu中编译安装了boost 1.38,安装过程没有什么异常,大概用了1个小时左右。
测试时出现了问题。
- C/C++ code
#include <iostream>#include <boost/regex.hpp>#include <string>intmain(){ std::string regstr = "(\\d+)"; boost::regex expression(regstr); std::string testString = "192.168.4.1"; boost::smatch what; if( boost::regex_search(testString, expression) ) { std::cout<< "Have digit" << std::endl; } return 0;}
编译是出现了好几屏很晦涩的错误,
类似
/tmp/ccUwAevw.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()':
test.cpp:(.text._ZN5boost9re_detail12perl_matcherIN9__gnu_cxx17__normal_iteratorIPKcSsEESaINS_9sub_matchIS6_EEENS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE12extend_stackEv[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()]+0x20): undefined reference to `boost::re_detail::get_mem_block()'
可我在用smart_ptr时却很正常,有人遇到过类似的问题吗?
[解决办法]
我在1.35下面没有发现问题vs2005 sp1