快速入门Google序列化反序列化库——google protobuf 2
一、首先了解序列化与反序列化的概念
序列化:将对象转化为字节序列的过程。
反序列化:将字节序列转化为对象的过程。
标题提到的google protobuf 提供了这种支持。
二、使用场景
1> 通过socket在网络上传递对象;(我只接触过这种情况)
2>把的内存中的对象状态保存到一个文件中或者数据库中;
3>通过RMI传输对象;
三、一个简单的c++入门示例
1. 编码前的准备
1.1 下载源码
我使用的是2.6.1的。主要是因为有vs项目文件,可以直接打开sln编译。src目录是c++版本的源码(还有Java
Python 、c#……)。
1.2 编译要使用的lib及exe
libprotobuf.lib : 所要依赖的库。
protoc.exe : 将相应的proto文件编译为.h /.cpp文件。
2.定制对象结构
2.1 编写proto文件
proto有自己语法,百度有好多参考资料。定义一个person.proto的文件内容如下:
package tutorial; //这句话将回指示下边的Person类(编译后)的命名空间
message Person { // 该类的成员
required string name = 1;
required int32 age = 2;
optional string email = 3;
}
2.2编译proto文件为c++文件
上边执行指令含义依次为:
1>指令protoc; 2> proto文件路径; 3>当前目录下输出c++文件 4>proto文件。
命令成功会生成如下两个文件,需要加到项目中。
2.3 Qt测试工程:
1.创建Qt控制台应用程序;
2.将上边的文件(person.pb.cc/person.pb.h)加入工程中;
3.将1.1提到的src文件夹拷贝到项目目录(我在项目根目录下googlepb目录中),还有lib文件见下一步图;
4. 添加依赖库和头文件路径;
5.测试代码
可以在以下链接下载demo和需要的lib: