2017-01-23 3 views
0

Я использовал boost :: regex раньше, на моем старом компьютере, но теперь я не могу понять, как его использовать.Компиляция с буфером regex 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, даже если у меня уже было это с Code Blocks, и я «сделал» "libs с тем, который я установил позже. (путь для mingw установлен там).

+1

Похож на конфликтующие версии компилятора/флаги. – sehe

+0

@Neox, вы можете использовать std :: regex вместо boost :: regex. Он был добавлен в C++ 11. –

+0

@sehe вы можете быть более точным, пожалуйста? Я думаю, что проблема связана с компиляцией libs с вручную загруженной mingw и компиляцией проекта с использованием блока кода. Считаете ли вы, что это проблема? – Neox

ответ

0

Я нашел решение, я отправляю его на всякий случай, если он может помочь кому-то другому.

Проблема была в том, что я вручную загрузил MinGW, и я использовал его для компиляции libs, и я компилировал свою программу с MinGW Code Blocks. Вероятно, у них были разные версии, что действительно было проблемой.

Смежные вопросы