介绍
protocol buffers 是一种语言无关、平台无关、可扩展的序列化结构数据的方法,它可用于(数据)通信协议、数据存储等。
Protocol Buffers 是一种灵活,高效,自动化机制的结构数据序列化方法-可类比 XML,但是比 XML 更小(3 ~ 10倍)、更快(20 ~ 100倍)、更为简单。
你可以定义数据的结构,然后使用特殊生成的源代码轻松的在各种数据流中使用各种语言进行编写和读取结构数据。你甚至可以更新数据结构,而不破坏由旧数据结构编译的已部署程序。
简单来讲, ProtoBuf 是结构数据序列化[1] 方法,可简单类比于 XML[2],其具有以下特点:
语言无关、平台无关。即 ProtoBuf 支持 Java、C++、Python 等多种语言,支持多个平台
高效。即比 XML 更小(3 ~ 10倍)、更快(20 ~ 100倍)、更为简单
扩展性、兼容性好。你可以更新数据结构,而不影响和破坏原有的旧程序
序列化[1]:将结构数据或对象转换成能够被存储和传输(例如网络传输)的格式,同时应当要保证这个序列化结果在之后(可能在另一个计算环境中)能够被重建回原来的结构数据或对象。
更为详尽的介绍可参阅 维基百科。
类比于 XML[2]:这里主要指在数据通信和数据存储应用场景中序列化方面的类比,但个人认为 XML 作为一种扩展标记语言和 ProtoBuf 还是有着本质区别的。
编译
准备protobuf源码
首先需要下载源代码:
https://github.com/protocolbuffers/protobuf/releases
准备CMake
需要安装Cmake,如没有安装:
https://cmake.org/download/
配置
第一步:填好输入,输出,注意source code 这里一定要选到cmake那个夹。
第二步,点击config:
注意选择正确的VS版本
第三步:点击generate,等待完成。使用VS打开这个项目。
编译libprotobuf,protoc,libprotoc这三个项目,在项目上右键,选择设为启动项目,再选择生成:
编译好后去sln所在文件夹下的Debug文件夹,如果出现这些就对了:
C++ demo
完成后会多两个文件:
C++ 的Demo代码参考:
https://www.cnblogs.com/WindSun/p/12543066.html