使用boost编译时发生序列化错误

问题描述

我正在尝试编译一个用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,并且该版本至少对他/她有用。