问题描述
我正在尝试编译一个用C ++编写并使用Boost的软件,称为Bagel(量子化学程序,某些信息是here)。
我遇到编译错误,而且由于我不了解C ++,而且我从未使用过boost,所以我基本上迷路了。该程序的作者说,我遇到的问题取决于我的Boost安装,而不取决于程序本身。
我安装了boost 1.73.0(Linux Mint 20,g ++ 9.3.0),用于:
sudo ./bootstrap.sh --prefix=/usr/local
sudo ./b2 install
编译程序时出现以下错误:
/usr/local/include/boost/serialization/access.hpp:119:11: error: ‘class std::unordered_set<long unsigned int>’ has no member named ‘serialize’
119 | t.serialize(ar,file_version);
| ~~^~~~~~~~~
/usr/local/include/boost/serialization/access.hpp: In instantiation of ‘static void boost::serialization::access::serialize(Archive&,T&,unsigned
int) [with Archive = boost::archive::binary_oarchive; T = std::unordered_set<long unsigned int>]’:
/usr/local/include/boost/serialization/serialization.hpp:69:22: required from ‘void boost::serialization::serialize(Archive&,unsigned int)
[with Archive = boost::archive::binary_oarchive; T = std::unordered_set<long unsigned int>]’
/usr/local/include/boost/serialization/serialization.hpp:128:18: required from ‘void boost::serialization::serialize_adl(Archive&,unsigned int) [with Archive = boost::archive::binary_oarchive; T = std::unordered_set<long unsigned int>]’
/usr/local/include/boost/archive/detail/oserializer.hpp:148:40: required from ‘void boost::archive::detail::oserializer<Archive,T>::save_object_data(boost::archive::detail::basic_oarchive&,const void*) const [with Archive = boost::archive::binary_oarchive; T = std::unordered_set<long unsigned int>]’
/usr/local/include/boost/archive/detail/oserializer.hpp:101:1: required from ‘class boost::archive::detail::oserializer<boost::archive::binary_oarchive,std::unordered_set<long unsigned int> >’
/usr/local/include/boost/archive/detail/oserializer.hpp:253:13: required from ‘static void boost::archive::detail::save_non_pointer_type<Archive>::save_standard::invoke(Archive&,const T&) [with T = std::unordered_set<long unsigned int>; Archive = boost::archive::binary_oarchive]’
/usr/local/include/boost/archive/detail/oserializer.hpp:308:22: [ skipping 21 instantiation contexts,use -ftemplate-backtrace-limit=0 to disable ]
...
以下https://lists.boost.org/boost-users//2014/03/81583.php帖子报告了类似的错误,但我不知道该如何解决。 任何帮助将不胜感激!
解决方法
要求说
Boost C ++库-版本1.53.0或更高版本
Boost以进行非向后兼容更改而闻名。 1.73与1.53相差甚远。我会尝试安装Bagel的作者必须使用的1.53,并且该版本至少对他/她有用。