




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
关于protobuf初步学习指南撰写人:马宇昌时间:2011-12-28本文档设置了文档结构,如果不方便阅读,选择视图-文档结构图进行辅助阅读。前言关于protobuf资料与源码可在官方网站以及下面站点寻找/p/protobuf/ /p/protobuf/downloads/list/intl/zh-CN/apis/protocolbuffers/docs/overview.html1protobuf简介(引用网络上的内容,目的是对protobuf有简洁的了解)protobuf是google提供的一个开源序列化框架,类似于XML,JSON这样的数据表示语言,其最大的特点是基于二进制,因此比传统的XML表示高效短小得多。虽然是二进制数据格式,但并没有因此变得复杂,开发人员通过按照一定的语法定义结构化的消息格式,然后送给命令行工具,工具将自动生成相关的类,可以支持java、c+、python等语言环境。通过将这些类包含在项目中,可以很轻松的调用相关方法来完成业务消息的序列化与反序列化工作。protobuf在google中是一个比较核心的基础库,作为分布式运算涉及到大量的不同业务消息的传递,如何高效简洁的表示、操作这些业务消息在google这样的大规模应用中是至关重要的。而protobuf这样的库正好是在效率、数据大小、易用性之间取得了很好的平衡。2下载protobuf,我下载的是2.4.1版本从/p/protobuf/downloads/list网站下载需要的版本,目前最新的是2.4.1版本。下载protobuf-2.4.1.zip到H盘,解压后(最好选择右击压缩文件,解压到protobuf-2.4.1),找到vsprojects文件夹,阅读readme文件,里面介绍在windows下protobuf的使用方法。3安装编译protobuf(1)打开libprotobuf工程vsprojects文件夹中有很多项目工程,它们属于同一个解决方案。使用VS2008打开libprotobuf工程,这里可能会遇到版本转换的问题,因为vsprojects中的protobuf是2005版本的。只要正常转换就可以了,不需要备份旧有的版本。转换后的protobuf解决方案如图1所示图1 protobuf解决方案(2)编译解决方案右击解决方案protobuf-生成解决方案,或者选择生成-生成解决方案,或者分别编译各个项目,右击各个项目,选择右击后菜单中的生成即可。编译过程一般不会有错。(3)编译后生成需要的文件编译完成后在vsprojects下的Debug文件夹下会生成我们需要的东西。如图2,生成的exe文件图2 生成的exe文件如图3,生成的lib文件图3 生成的lib文件至此,我们完成了protobuf的安装与编译工作。如果要使用该protobuf,需要使用VS2008编译出来的libprotoc和libprotobuf两个类库。4protobuf的使用(1)编译.proto文件方法通用格式protoc -I=$SRC_DIR -cpp_out=$DST_DIR $SRC_DIR/*.protoA定义to文件在H:protobuf-2.4.1protobuf-2.4.1examples目录下。to文件内容如下:package Im;message helloworldrequired int32id=1;required stringstr=2;optional int32opt=3;B命令行进入protoc文件存在的目录,H:protobuf-2.4.1protobuf-2.4.1vsprojectsDebug。C运行命令protoc -I=H:protobuf-2.4.1protobuf-2.4.1examples -cpp_out=H:protobuf-2.4.1protobuf-2.4.1examples H:to。注意空格。这样在examples文件夹下会生成两个文件person.pb.h和person.ph.cc文件。(2)测试使用示例在VS2008下创建一个工程ProtoBuf,需要添加protobuf的头文件和lib文件。A添加头文件操作:右击项目属性配置属性C/C+常规,右边附加包含目录。具体路径:H:protobuf-2.4.1protobuf-2.4.1srcB添加库文件(lib)操作:右击项目属性配置属性链接器常规,右边附加库目录。具体路径:H:protobuf-2.4.1protobuf-2.4.1vsprojectsDebug把person.pb.h和person.ph.cc放到工程ProtoBuf相应的头文件夹和源文件夹中。当然项目中使用到头文件应该在相应的代码处添加#include person.pb.h。(3)在项目中使用protobuf的两种方法。A在源代码中包含:#pragma comment(lib,libprotobuf.lib)#pragma comment(lib, libprotoc.lib) 如图4右边的第7、第8行。图4 ProtoBuf示例1,在代码中导入类库B 在项目中添加项目libprotobuf并使自己的项目依赖于项目libprotobuf。如图5,左边的libprotobuf可用,同时注意与图4比较,主要是第7,第8行。图5 ProtoBuf示例2,在项目中导入类库项目依赖方法:右击项目ProtoBuf-项目依赖项,弹出如下对话框选中libprotobuf,点击确定即可。上面介绍的两种方法都可以使项目正常编译并运行。该ProtoBuf运行结果如图6。图6 项目运行结果5在VS2008中定义对*.proto文件的生成规则我们知道上面的示例程序中person.pb.h和person.ph.cc文件是通过命令行生成的再添加到项目中,这样当我们有很多*.proto文件时就很麻烦,因此希望能在VS2008中直接对*.proto自动编译成相应的.pb.h文件和.pb.cc文件。下面介绍在VS2008中定义对*.proto文件的生成规则,可以编译的时候自动编译*.proto文件,而不需要命令行编译。(1)首先要定义规则右击项目-自定义生成规则,弹出自定义生成规则对话框,如图7。图7 自定义生成规则对话框点击新建规则,弹出新建规则对话框,填写相应的内容,如图8。图8 新建规则对话框点击添加生成规则,弹出添加自定义生成规则对话框,填写相应内容,如图9。图9 添加自定义规则对话框命令行内容为:H:protobuf-2.4.1protobuf-2.4.1vsprojectsDebugprotoc -I=$(InputDir) -cpp_out=$(InputDir) $(InputDir)$(InputName).proto。H:protobuf-2.4.1protobuf-2.4.1vsprojectsDebugprotoc是编译好的ProtoBuf中protoc所在的位置。完成以后依次向上点击确定。这样定义的规则文件名为protobuf.rules,存放在C:Program FilesMicrosoft Visual Studio 8Common7IDE文件夹下。(2)使用自定义规则使用定义好的自定义规则,可以使VS2008自动编译*.proto文件。A使用VS2008打开你的项目,右击项目-生成自定义规则,选中你要使用的规则文件。B选择工具-选项-项目和解决方案-VC+目录,在可执行文件部分添加protoc的绝对路径。例如我的是H:protobuf-2.4.1protobuf-2.4.1vsprojectsDebugprotoc。具体见图10。图10 ProtoBu
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025广西来宾市忻城县政府投资审计中心招聘见习生2人模拟试卷及完整答案详解1套
- 2025湖南岳阳市平江县事业单位第一批公开选调工作人员考前自测高频考点模拟试题及一套答案详解
- 2025年上半年四川绵阳市游仙区考核招聘教师31人考前自测高频考点模拟试题及1套参考答案详解
- 2025河南商丘市民权县消防救援大队招聘政府专职消防员32人模拟试卷及参考答案详解1套
- 2025海南白沙黎族自治县机关事务服务中心招聘公益性岗位人员2人考前自测高频考点模拟试题附答案详解
- 2025年阜阳颍上县人民医院引进博士研究生2人考前自测高频考点模拟试题附答案详解(完整版)
- 2025年轧钢导卫装置项目合作计划书
- 2025广东中共中山市委政法委员会所属事业单位招聘事业单位人员4人模拟试卷及完整答案详解一套
- 2025内蒙古鄂尔多斯生态环境职业学院人才引进38人考前自测高频考点模拟试题带答案详解
- 2025年福建省龙岩市武平县乡村人才振兴招聘10人模拟试卷及参考答案详解
- 高中化学-金属钠的性质及应用教学设计学情分析教材分析课后反思
- 工程量清单及招标控制价编制方案
- 04S519小型排水构筑物(含隔油池)图集
- 工程施工人员安全教育培训【共55张课件】
- 双碱法脱硫操作专项规程
- 人教版七年级上学期英语第一次月考试卷(含答案解析)
- 仿生机器鱼行业规模分析
- 胸闷病人的护理查房
- β内酰胺类抗菌药物皮肤试验指导原则(2021版)
- 北京猿人头盖骨失踪之谜
- 华中科技大学教学课件-工程传热学1王晓墨
评论
0/150
提交评论