【问题标题】:serialization error when compiling with boost使用 boost 编译时出现序列化错误
【发布时间】:2020-08-18 20:35:18
【问题描述】:

我正在尝试编译一个名为 Bagel 的软件(一个量子化学程序,一些信息是 here),用 C++ 编写并使用 Boost。

我收到一个编译错误,由于我不懂 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&, T&, 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&, T&, 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 报告了一个类似的错误,但我不明白我应该如何解决它。 任何帮助将不胜感激!

【问题讨论】:

    标签: c++ serialization boost compilation


    【解决方案1】:

    需求说

    Boost C++ 库 - 版本 1.53.0 或更高版本

    Boost 以进行非向后兼容的更改而闻名。 1.73 与 1.53 相差甚远。我会尝试安装 Bagel 的作者必须使用的 1.53,而这个至少对他/她有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多