我在链接 Boost Regex 时遇到问题,但我可以运行(编译/链接)其他 Boost 程序。
我意识到这是“有据可查的”,但我找不到答案,因为各种帖子使用不同版本的 Boost、不同的编译器、使用 bjam(我使用过 b2),似乎暗示了我已经尝试过的内容等。
设置
Visual Studio 10(我正在使用 C++)
增强版:1.53.0
初始安装:我遵循了如何在 Visual Studio 2010 中使用 Boost(我一直到第二点 4)。我还没有下载 ICU 对 Regex 的支持,因为我认为只有在需要 Unicode 支持时才需要这样做?
我通过更新“包含目录”并添加 C:.......\Boost\boost_1_53_0 在项目属性中包含了相关库
我已经通过添加“C:.....\Boost\boost_1_53_0\stage\lib”在项目属性库目录中包含了相关目录,以便它知道从哪里链接库(至少我是这么认为的这确实)。
问题
我可以使用(例如)Boost Random Numbers 编译、链接和运行程序。
如果我试图通过说添加正则表达式功能:
boost::algorithm::split_regex( result, str, regex( "[0-9]+|->" ) )
我收到以下形式的链接错误。
1>Bibtex.obj : error LNK2001: unresolved external symbol "private: class boost::basic_regex<char,struct boost::regex_traits<char,class boost::w32_regex_traits<char> > > & __thiscall boost::basic_regex<char,struct boost::regex_traits<char,class boost::w32_regex_traits<char> > >::do_assign(char const *,char const *,unsigned int)" (?do_assign@?$basic_regex@DU?$regex_traits@DV?$w32_regex_traits@D@boost@@@boost@@@boost@@AAEAAV12@PBD0I@Z)
1>Bibtex.obj : error LNK2001: unresolved external symbol "public: bool __thiscall boost::re_detail::perl_matcher<class std::_String_const_iterator<char,struct std::char_traits<char>,class std::allocator<char> >,class std::allocator<struct boost::sub_match<class std::_String_const_iterator<char,struct std::char_traits<char>,class std::allocator<char> > > >,struct boost::regex_traits<char,class boost::w32_regex_traits<char> > >::find(void)" (?find@?$perl_matcher@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V?$allocator@U?$sub_match@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@boost@@@2@U?$regex_traits@DV?$w32_regex_traits@D@boost@@@boost@@@re_detail@boost@@QAE_NXZ)
1>Bibtex.obj : error LNK2001: unresolved external symbol "private: void __thiscall boost::re_detail::perl_matcher<class std::_String_const_iterator<char,struct std::char_traits<char>,class std::allocator<char> >,class std::allocator<struct boost::sub_match<class std::_String_const_iterator<char,struct std::char_traits<char>,class std::allocator<char> > > >,struct boost::regex_traits<char,class boost::w32_regex_traits<char> > >::construct_init(class boost::basic_regex<char,struct boost::regex_traits<char,class boost::w32_regex_traits<char> > > const &,enum boost::regex_constants::_match_flags)" (?construct_init@?$perl_matcher@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V?$allocator@U?$sub_match@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@boost@@@2@U?$regex_traits@DV?$w32_regex_traits@D@boost@@@boost@@@re_detail@boost@@AAEXABV?$basic_regex@DU?$regex_traits@DV?$w32_regex_traits@D@boost@@@boost@@@3@W4_match_flags@regex_constants@3@@Z)
1>C:\Users\kzzgrk\Dropbox\Projects\classes\Bibtex\BibtexFramework\Debug\BibtexFramework.exe : fatal error LNK1120: 3 unresolved externals
我不知道如何解决这个问题,因为我似乎已经尝试了一切。我能想到的唯一可能性是我需要使用b2
命令行程序构建 boost 库,但我不知道该推荐应该是什么(正如我在上面所说的那样,很多引用都是对 bjam 的)。
任何帮助/建议将不胜感激。