boost icon indicating copy to clipboard operation
boost copied to clipboard

spirit utree does not work anymore

Open bpinaud opened this issue 4 years ago • 1 comments

I have a huge parser made with spirit and utree which is working well for quite a long time. Since boost 1.72 (I think), it does not compile anymore (not better with 1.74). I did not change my code. Just a Boost update from my Linux distro (gentoo). Here is the cryptic message. I hope you can be of any help. Here is the error message with Boost-1.74:

/usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: CMakeFiles/strategy-spirit-5.5.0.dir/runstrategyelementvisitors.cpp.o: in function boost::spirit::utree boost::spirit::function_impl_invert::eval<bool>(bool const&)': /usr/include/boost/spirit/home/support/utree/operators.hpp:545: multiple definition of boost::spirit::utree boost::spirit::function_impl_invert::eval(bool const&)'; CMakeFiles/strategy-spirit-5.5.0.dir/RunStrategyElement.cpp.o:/usr/include/boost/spirit/home/support/utree/operators.hpp:545: first defined here /usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: CMakeFiles/strategy-spirit-5.5.0.dir/Strategy.cpp.o: in function boost::spirit::utree boost::spirit::function_impl_invert::eval<bool>(bool const&)': /usr/include/boost/spirit/home/support/utree/operators.hpp:545: multiple definition of boost::spirit::utree boost::spirit::function_impl_invert::eval(bool const&)'; CMakeFiles/strategy-spirit-5.5.0.dir/RunStrategyElement.cpp.o:/usr/include/boost/spirit/home/support/utree/operators.hpp:545: first defined here /usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: CMakeFiles/strategy-spirit-5.5.0.dir/StrategyElement.cpp.o: in function boost::spirit::utree boost::spirit::function_impl_invert::eval<bool>(bool const&)': /usr/include/boost/spirit/home/support/utree/operators.hpp:545: multiple definition of boost::spirit::utree boost::spirit::function_impl_invert::eval(bool const&)'; CMakeFiles/strategy-spirit-5.5.0.dir/RunStrategyElement.cpp.o:/usr/include/boost/spirit/home/support/utree/operators.hpp:545: first defined here /usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: CMakeFiles/strategy-spirit-5.5.0.dir/UtreeWalk.cpp.o: in function boost::spirit::utree boost::spirit::function_impl_invert::eval<bool>(bool const&)': /usr/include/boost/spirit/home/support/utree/operators.hpp:545: multiple definition of boost::spirit::utree boost::spirit::function_impl_invert::eval(bool const&)'; CMakeFiles/strategy-spirit-5.5.0.dir/RunStrategyElement.cpp.o:/usr/include/boost/spirit/home/support/utree/operators.hpp:545: first defined here collect2: error: ld returned 1 exit status

Best, Bruno

bpinaud avatar Dec 07 '20 13:12 bpinaud

This is a bug introduced in Spirit utree in Boost 1.74, is now fixed, see https://github.com/boostorg/spirit/issues/638

pmalic avatar Jan 27 '21 09:01 pmalic