我试图编译一个使用Orwell Dev-C ++中的Boost / Regex库和TDM-GCC 4.8.2 64位版本的个人程序,当我尝试初始化Boost::Regex
对象时我收到这些错误消息。
text$_ZN5boost9re_detail27cpp_regex_traits_char_layerIcEC2ERKNS0_21cpp_regex_traits_baseIcEE[_ZN5boost9re_detail27cpp_regex_traits_char_layerIcEC2ERKNS0_21cpp_regex_traits_baseIcEE]+0x2b): undefined reference to `boost::re_detail::cpp_regex_traits_char_layer<char>::init()'
regex_tester_main.cpp:(.text$_ZN5boost9re_detail11raw_storage6extendEy[_ZN5boost9re_detail11raw_storage6extendEy]+0x5f): undefined reference to `boost::re_detail::raw_storage::resize(unsigned long long)'
regex_tester_main.o: bad reloc address 0x5f in section `.text$_ZN5boost9re_detail11raw_storage6extendEy[_ZN5boost9re_detail11raw_storage6extendEy]'
我已经按照guide来安装Boost,我使用gcc作为bootstrap.bat和b2构建器的工具包参数。我在include和库选项中包含了 include 和 lib 路径。最后链接了相应的libboost_regex * .a文件。在此之前,我尝试使用mingw toolkit选项作为b2的bootstrap和gcc选项,就像上面链接的教程那样,并遇到了相同的错误。任何人都可以深入了解出了什么问题吗?
答案 0 :(得分:0)
解决!
我还安装了Haskell GHC,它带有一个mingw / GCC包,它位于PATH环境变量的早期,而不是我用来构建Boost的TDM-GCC / minGW-64包。因此,当我指定我的工具集时,它的目标是错误的编译器,因此当我尝试使用Boost构建其他程序时,它可能会遇到一些名称错误的问题。我从PATH中移除了GHC的mingw / GCC编译器包并重建了Boost,它现在符合并链接良好:)。