使用VS 2015编译Protocol Buffers 2.6.1?

7
我想要将ProtoBuf 2.6.1与VS 2015 C++应用程序一起使用。然而,我无法链接到使用VS 2013编译的libprotobuf.lib。我尝试再次使用VS 2015编译libprotobuf.lib,但遇到了编译错误,指出<hash_map><hash_set>已被弃用。
看起来GitHub库中ProtoBuf的cmake文件现在已经全部设置为ProtoBuf 3.0。是否仍有可能使用VS 2015编译libprotobuf?

1
这个链接有帮助吗? - CristiFati
3
定义_SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS进行编译。然而,我最终从GitHub获取了最新的hash.h文件,该文件添加了对较新版本的MSVC编译器的支持。 - Ionian316
3个回答

5
很遗憾,cmake构建只能从protobuf v3.0.0-alpha开始使用。
我已经成功地使用以下非官方cmake脚本在MSVC 2015中构建了protobuf v2.6.1:scripts。你需要从该存储库中获取updated_for_v2.6.1分支。
为此,请克隆protobufprotobuf-cmake两个存储库。
在protobuf克隆中检出v2.6.1标签,在protobuf-cmake中检出origin/updated_for_v2.6.1分支。
然后按照惯例构建它,可以从打开的解决方案或使用“cmake --build .”命令构建。
希望对你有所帮助。

我今天在PowerShell中尝试使用CMake 3.18.1,并进行了一些更改使其正常工作:
  1. 不再有更新为2.6.1的分支,应该使用主分支
  2. 我需要在传递给CMake的路径周围添加双引号
- Étienne

3
为了让单元测试运行,您还需要修改几个测试用例,在宏中连接字符串。只需在宏的两侧添加一个空格即可,编译器解析器就能正常工作。
运行时会有一些测试失败,这是由于创建临时文件名时使用了目录前斜杠与后斜杠不一致,但这并不重要。
除此之外没有问题。顺便说一下,我无法核实,但这可能是我使用v3 alpha版本的经历,而不是261版本,因为我是从记忆中做这个的。
在RC上都可以构建成功,而且我认为我们的Jenkins工作已经在转到2015年prof RTM后重新构建了它们。

1

您可以参考使用Visual Studio 2015构建错误#314

感谢您的报告,但我们目前不支持Visual Studio 2015。请改用Visual Studio 2013,直到我们正式切换到Visual Studio 2015。

请注意,我们确实计划切换到Visual Studio 2015,但我现在想专注于其他高优先级问题。如果您对Mozc for Windows中Visual Studio 2015支持的进展感兴趣,请订阅#315。

话虽如此,修复构建失败并不困难。我已经上传了518f41a的概念验证更改,只供您参考。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接