找不到 boost::serialization 的成员

Posted

技术标签:

【中文标题】找不到 boost::serialization 的成员【英文标题】:Can't find a member of boost::serialization 【发布时间】:2015-07-17 17:42:52 【问题描述】:

我正在使用 git 做一个项目。我有一个分支,它一直在编译,但是当我尝试从头开始构建它时,我开始在编译时遇到这个奇怪的错误:

In file included from ~/path/to/boost/install/include/boost/serialization/set.hpp:26:0,
~/path/to/boost/install/include/boost/serialization/detail/stack_constructor.hpp: In constructor 'boost::serialization::detail::stack_construct<Archive, T>::stack_construct(Archive&, unsigned int)':
~/path/to/boost/install/include/boost/serialization/detail/stack_constructor.hpp:54:9: error: 'load_construct_data_adl' is not a member of 'boost::serialization'
     boost::serialization::load_construct_data_adl(
     ^

有什么想法吗?

【问题讨论】:

您使用的是哪个增强版本? 提升版本 1.57.0 但我尝试了 1.58.0 并弹出相同的错误 呃。这是一个构建问题。可能该错误是在早些时候引入的,但您只有在触发完全重建后才注意到。你碰巧可以访问 git 存储库吗? 你的意思是我正在做的项目? - 确定是bitbucket.org/mituq/muq @ad_ad 哇哦。该构建尝试从找不到它的地方下载提升。我伪造了一个网络服务器来解决这个问题。如果您想关注:livecoding.tv/sehe 【参考方案1】:

我将大胆猜测,除了 MUQ 构建配置的部分之外,还发现了系统打包的 boost 头文件。

MUQ 下载、构建和安装 boost(似乎是到 /usr/local/muq_external/include/boost),但是如果您的系统的软件包直接将冲突版本的 boost 标头安装到 /usr/include 中,那么这些可能会在 muq_external 版本之前找到。

我会确保没有安装用于提升的系统范围的开发文件。或者,您可以查看哪些文件编译失败,并查看适用的包含路径。

如果可以,请尝试为失败的翻译单元生成预处理器输出。 cmets 将准确显示包含(来自)哪个版本的标头。

【讨论】:

这也是我的第一个猜测,但我的机器上没有其他 boost 副本(这台机器基本上是专门为我在 MUQ 上工作而存在的)。是的,MUQ 构建/安装提升,但前提是它无法找到另一个工作安装。

以上是关于找不到 boost::serialization 的成员的主要内容,如果未能解决你的问题,请参考以下文章

Linux C++ 将 Boost 编译到我的程序中

boost 是不是支持 c++11 的 std::tuple 的序列化?

如何为 boost::serialization 指定一个 nvp 包装器?

来自boost / serialization / vector #include的链接器错误

对 boost::serialization 的未定义引用

如何让 boost::serialization 工作?