用boost编译正则表达式C++

问题描述:

我之前在我的旧电脑上使用了boost :: regex,但现在我无法弄清楚如何能够使用它。用boost编译正则表达式C++

我有链接的问题,我越来越:

||=== Build: Release in regex test (compiler: GNU GCC Compiler) ===| 
C:\boost\stage\lib\libboost_regex-mgw53-mt-1_63.a(regex.o)||duplicate section `.rdata$_ZTSN5boost16exception_detail19error_info_injectorISt13runtime_errorEE[__ZTSN5boost16exception_detail19error_info_injectorISt13runtime_errorEE]' has different size| 
C:\boost\stage\lib\libboost_regex-mgw53-mt-1_63.a(regex.o)||duplicate section `.rdata$_ZTSN5boost16exception_detail10clone_implINS0_19error_info_injectorISt13runtime_errorEEEE[__ZTSN5boost16exception_detail10clone_implINS0_19error_info_injectorISt13runtime_errorEEEE]' has different size| 
C:\boost\stage\lib\libboost_regex-mgw53-mt-1_63.a(regex.o)||duplicate section `.rdata$_ZTVN5boost16exception_detail19error_info_injectorISt13runtime_errorEE[__ZTVN5boost16exception_detail19error_info_injectorISt13runtime_errorEE]' has different size| 
C:\boost\stage\lib\libboost_regex-mgw53-mt-1_63.a(regex.o)||duplicate section `.rdata$_ZTVN5boost16exception_detail10clone_implINS0_19error_info_injectorISt13runtime_errorEEEE[__ZTVN5boost16exception_detail10clone_implINS0_19error_info_injectorISt13runtime_errorEEEE]' has different size| 
C:\boost\stage\lib\libboost_regex-mgw53-mt-1_63.a(cpp_regex_traits.o)||duplicate section `.data$_ZZN5boost16cpp_regex_traitsIcE21get_catalog_name_instEvE6s_name[__ZZN5boost16cpp_regex_traitsIcE21get_catalog_name_instEvE6s_name]' has different size| 
obj\Release\main.o:main.cpp:(.text$_ZNK5boost16re_detail_10630031cpp_regex_traits_implementationIcE18lookup_collatenameEPKcS4_[__ZNK5boost16re_detail_10630031cpp_regex_traits_implementationIcE18lookup_collatenameEPKcS4_]+0x80)||undefined reference to `boost::re_detail_106300::lookup_default_collate_name(std::string const&)'| 
obj\Release\main.o:main.cpp:(.text$_ZN5boost16re_detail_10630018basic_regex_parserIcNS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE4failENS_15regex_constants10error_typeEiSsi[__ZN5boost16re_detail_10630018basic_regex_parserIcNS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE4failENS_15regex_constants10error_typeEiSsi]+0x1d4)||undefined reference to `boost::regex_error::regex_error(std::string const&, boost::regex_constants::error_type, int)'| 
||error: ld returned 1 exit status| 
||=== Build failed: 3 error(s), 5 warning(s) (0 minute(s), 0 second(s)) ===| 

的代码是这样的:

#include <boost/regex.hpp> 

int main() 
{ 
    boost::regex test("test"); 
    return 0; 
} 

我链接C:\boost\stage\lib\libboost_regex-mgw53-mt-1_63.a,搜索目录是C:\boost

我正在编译使用代码块为您的信息。

我用mingw/gcc编译或“制作”了库文件,实际上我尝试了很多东西......我也下载并安装了mingw,即使我已经使用了代码块,并且“ “后来我安装了一个库。 (mingw的路径设置为那里)。

+1

看起来像冲突的编译器版本/标志。 – sehe

+0

@Neox,你可以使用std :: regex代替boost :: regex。它是用C++ 11添加的。 –

+0

@你可以更精确吗?我认为问题来自我使用mingw手动下载编译库,并用代码块的mingw编译项目。你认为这是问题吗? – Neox

我找到了解决方案,我发布它,以防万一它可以帮助别人。

问题是因为我手动下载了MinGW,我用它来编译库,我正在用代码块的MinGW编译我的程序。他们可能有不同的版本,确实是这个问题。