为啥 OpenDDS 无法编译?

Posted

技术标签:

【中文标题】为啥 OpenDDS 无法编译?【英文标题】:Why is OpenDDS failing to compile?为什么 OpenDDS 无法编译? 【发布时间】:2020-08-30 22:41:15 【问题描述】:

我的朋友正在尝试从这里编译 OpenDDS: OpenDDS Insall Directions

I have no code.. but i need this to make pastebin work?

她已经按照那个链接指向了一个 T。它产生了这些错误: Errors

以下是 Visual Studio 的完整输出: Output

有趣的部分:

我可以使用顶部链接中的说明编译它。我比她完成了更多的编码,所以安装了一些允许它毫无问题地编译的东西,她有一个干净的 Visual Studio Community 安装,我有 Visual Studio Enterprise(两个 2019) - 我认为版本不重要,但为了更好地理解而分享。

根据我从错误中收集到的信息,在她的机器上定位文件存在问题,而不是我的。为什么找不到文件?我不知道......我真的很困惑为什么它适用于我而不是她。

我什至制作了一台装有 Windows 10 的 VirtualBox 机器,但我也遇到了同样的错误。

非常感谢任何和所有帮助,谢谢!

【问题讨论】:

此处的所有问题都应在问题本身中以纯文本形式包含所有相关信息。链接可以随时停止工作,使问题变得毫无意义。无法复制/粘贴以图像形式显示的代码、数据或错误;或编辑或编译以供进一步研究和调查。请edit这个问题,删除并替换所有链接和图像,并将所有相关信息作为纯文本。所有代码必须满足minimal reproducible example 的所有要求。您可以在此处找到许多其他以纯文本形式解释所有内容的问题,请以它们为例说明您的问题应该是什么样子。 你想要完整的错误日志,我会给你完整的错误日志.. 你们两个运行的是完全相同版本的VS 2019吗?标准库的部分内容在最近的版本中进行了重构,这看起来像是 <string> 被其他一些标头隐式假定为 #include 的情况,但现在不再是。 @Seth 这可能是问题所在,例如,请参阅 @ 中“Header Inclusion Restructuring”下的“one downside...”注释987654326@。这是为原始 v16.0 版本编写的,但此后出现了更多此类重大更改。 您也可以在需要的地方尝试破解 OpenDDS 标头和#include <string>,但这可能不是唯一损坏的依赖项。和/或向 OpenDDS 报告构建错误并希望得到解决。 【参考方案1】:

此 PR 已修复:https://github.com/objectcomputing/OpenDDS/pull/1701,但尚未发布。我无法在上面的评论链中发表评论,但 dxiv 是正确的,这是由 VS2019 中的包含依赖项引起的。它只在 dds/DCPS/Serializer.h 头文件中,所以只要让你的朋友将该文件更改为 PR 中的样子,就可以构建它。

【讨论】:

啊啊啊啊。这是愚蠢的,需要更容易找到。她花了大约 4 天的时间来解决这个问题。 xD 看的时候还以为visual studio用了vsRedist之类的“插件”,studio的核心出了问题。非常感谢! 另外,VS 2017 也有效。但这有助于 2019 年的 16.7 版本。非常感谢@FredHomsey

以上是关于为啥 OpenDDS 无法编译?的主要内容,如果未能解决你的问题,请参考以下文章

OpenDDS 中的哪个库包含“OpenDDS::DCPS::operator<<”?

配置 OpenDDS

Opendds-3.13 发布构建失败

OpenDDS 错误 transport_type=tcp 未注册 :(

如何在windows系统上安装OpenDDS 3.12

OpenDDS - Windows下安装过程(VS2015)