为啥预建的协议缓冲区不包含任何头文件

Posted

技术标签:

【中文标题】为啥预建的协议缓冲区不包含任何头文件【英文标题】:Why prebuilt of protocol buffer doesn't contain any header files为什么预建的协议缓冲区不包含任何头文件 【发布时间】:2019-08-25 05:42:12 【问题描述】:

我是第一次使用协议缓冲区。我能够制作和编译 .proto

来自 protoc (protoc-3.9.1-win64) 的文件。但问题是当我想使用

编译文件我收到错误 google/protobuf/*.h 即使我有也找不到

设置包含 ./protoc-3.9.1-win64/include 的路径。

protoc的include文件夹只包含.proto文件

里面没有头文件?

我需要从源代码构建吗?

【问题讨论】:

哪些头文件没有找到? google/protobuf/*h 即#include 从源代码复制标题并尝试,github.com/protocolbuffers/protobuf/archive/v3.9.1.zip 【参考方案1】:

您已经下载了protoc 编译器的包。

但是,C++ 库位于单独的包中,protobuf-cpp-3.9.1.zip,其中cpp 代表C++。也有多个可用于其他语言的包。

【讨论】:

我需要用cmake构建它吗? @Mohit 通常是的,不过我猜你可以从protoc 包中获取二进制库,并从cpp 包中获取头文件。但是因为C++在不同编译器之间并不是完全二进制兼容的,所以还是自己构建比较好。

以上是关于为啥预建的协议缓冲区不包含任何头文件的主要内容,如果未能解决你的问题,请参考以下文章

google 的从 c# 到 java 的协议缓冲区 - 协议消息标签的线路类型无效

在协议缓冲区中定义字典

容器看不到其中预建的供应商文件夹

如何使用协议缓冲区创建动态消息?

协议缓冲区 - 将具有相同 .proto 文件的二进制数据文件合并到一个文件中

为啥固定大小的缓冲区只能是原始类型?