【发布时间】: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