码迷,mamicode.com
首页 > 其他好文 > 详细

Google Protocol Buffer安装编译及使用

时间:2015-07-14 20:34:26      阅读:147      评论:0      收藏:0      [点我收藏+]

标签:

最近玩了玩谷歌的Protocol Buffer,下面就简单介绍下

Google Protocol Buffer( 简称 Protobuf) 是 Google 公司内部的混合语言数据标准,目前已经正在使用的有超过 48,162 种报文格式定义和超过12,183 .proto 文件,他们用于RPC 系统和持续数据存储系统。Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化。它很适合做数据存储或 RPC 数据交换格式。可用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式。目前提供了 C++JavaPython 三种语言的 API相比较一些其他的XML技术而言,该技术的一个明显特点就是更加节省空间(以二进制流存储)、速度更快以及更加灵活。

安装 Google Protocol Buffer

在网站 http://code.google.com/p/protobuf/downloads/list上可以下载Protobuf 的源代码。然后解压编译安装便可以使用它了。

技术分享

解压完成后首先要对源码进行编译再此以win7为例,因为编译需要用到visual studio所以没有安装的需要先安装vs,我电脑上装的是vs2010,装好vs后打开vsprojects文件夹

技术分享技术分享

点击红框内的文件打开,这时候就打开了vs程序,应该会提示进行项目转换

将编译模式切换为Release模式,并右键分别生成libprotobuflibprotobuf-litelibprotocprotoc这四个工程,编译完成后在Release文件夹下会生成这四个文件libprotobuf.liblibprotobuf-lite.liblibprotoc.libprotoc.exe 

技术分享

将它们拷贝到cwindows目录下

接下来就可以用protoc了,使用如下命令

protoc --proto_path=IMPORT_PATH --cpp_out=DST_DIR --java_out=DST_DIR --python_out=DST_DIR path/to/file.proto
以下是各种语言的不同写法
技术分享

例如

protobuf-master\java>protoc -I=D:\Cell\proto --java_out=D:\Cell\proto\Cell D:\Cell\proto\test.proto

如果不出意外在目标路径下就会生成相应的版本的文件了,文件有了接下来就是如何用,下面以java为例

别的语言不太清楚,java在使用的时候问题会比较多,当你把生成的java文件拷贝到编辑器里边时会发现报错,这是因为缺少jar包,jar包从何而来呢?进入proto源码下的java文件夹有个README.md用记事本打开它

技术分享

跟着它一步一步来吧,首先安装maven,就是下载完了配置下环境变量,然后分别运行1,2,3命令吧,第三步要注意

就是说你要确保protobuf-master\src目录下有proto.exe,理论上你自己编译完成了就有了,然而并没有,好吧,还记得编译完成后我们生成的那几个文件有这个吧,把它再拷贝一份过来,然后再来运行这几个命令,顺利完成。到此为止你的protobuf-master\java\target这个路径下就会多了一些文件了,把jar包拷贝到编译器吧,然后就可以开始使用了。

在此给出官网上一个例子,这是一个.proto文件

message Person {
  required string name = 1;
  required int32 id = 2;
  optional string email = 3;

  enum PhoneType {
    MOBILE = 0;
    HOME = 1;
    WORK = 2;
  }

  message PhoneNumber {
    required string number = 1;
    optional PhoneType type = 2 [default = HOME];
  }

  repeated PhoneNumber phone = 4;
}

message AddressBook {
  repeated Person person = 1;
}

使用的时候就可以这样用了

<strong><span style="color:#330033;">Person john =
         Person.newBuilder()
                    .setId(1234)
                    .setName("John Doe")
                    .setEmail("jdoe@example.com")
                    .addPhone(
                            Person.PhoneNumber.newBuilder()
                                    .setNumber("555-4321")
                                    .setType(Person.PhoneType.HOME))
                    .build();
    Log.d("test",john.toString()+"");</span></strong><span style="color:#ffffff;">
</span>






版权声明:本文为博主原创文章,未经博主允许不得转载。

Google Protocol Buffer安装编译及使用

标签:

原文地址:http://blog.csdn.net/shaohx0518/article/details/46881327

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!