boost的正则表达式无法编译

Nea*_*l P 6 c++ regex gcc boost

我在Ubuntu上使用boost 1.45.0,Code :: Blocks作为我的IDE,我无法编译basic_regex.hpp.我很确定我正确设置了boost,因为我可以使用boost :: format编译程序而不会出现任何错误.但我得到了这个恼人的错误,我不知道如何摆脱它.

引发错误的代码:

boost::regex e("\"http:\\\\/\\\\/localhostr.com\\\\/files\\\\/.+?\"");
Run Code Online (Sandbox Code Playgroud)

编译器输出(GCC):

obj/Debug/main.o
In function `boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::assign(char const*, char const*, unsigned int)'

/home/neal/Documents/boost_1_45_0/boost/regex/v4/basic_regex.hpp|379|
undefined reference to `boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::do_assign(char const*, char const*, unsigned int)'|

||=== Build finished: 1 errors, 0 warnings ===|
Run Code Online (Sandbox Code Playgroud)

设置提升时我是否错过了一个步骤,还是应该降级到另一个版本的提升?

Vik*_*kas 13

这看起来像链接器错误.boost :: regex不是一个只有头的库,所以你需要-lboost_regex正确-L/path/to/boost/lib地传递给链接器.


Soa*_*Box 9

Boost :: Regex有一些代码存在于一个单独的库中(libboost_regex.so).要链接它,请添加-lboost_regex到您正在使用的GCC命令行.

根据您的安装,可能是libboost_regex-mt.so.在这种情况下,您需要-lboost_regex-mt在命令行上使用.(MT代表多线程.)