快速入门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:

     https://download.csdn.net/download/ypy9323/10584293

猜你喜欢

转载自blog.csdn.net/ypy9323/article/details/81428911
今日推荐