博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ProtoBuffer由.proto文件生成.cc/.h
阅读量:6659 次
发布时间:2019-06-25

本文共 1562 字,大约阅读时间需要 5 分钟。

 

一:编译源码

下载地址:http://code.google.com/p/protobuf/downloads/list 
下载后,根据编译说明进行编译。
windows 平台,直接打开msvc中的工程文件,直接编译。
unix/平台,先进行configure,在make。

[下载和编译过程不详述,请看]

生成的结果中有库文件有:

libprotobuf.lib

libprotobuf-lite.lib

libprotoc.lib

可执行文件有:
protoc.exe
头文件:
根据提供的extract_includes.bat文件,提取公共头文件。
二:编写proto文件
根据需要,编写proto文件。

补充一条:如果想使用libprotobuf-lite.lib(会使二进制体积小一些),则在.proto文件的头部声明:

option optimize_for = LITE_RUNTIME;

三:生成头文件
编写完proto文件后,接下来,用protoc.exe生成.h和.cc文件。
命令如下:
protoc.exe -proto_path=SRC --cpp_out=DST SRC/checklist.proto 
其中--proto_path指出proto文件所在的目录,--cpp_out则是生成的代码文件要放的目录,最后的一个参数指出proto文件的路径。如上述命令中可以看出,将SRC目录下的addressbook.proto编译后放在DST目录下,应该会生成checklist.pb.h和checklist.pb.cc文件

 

四:Notepad++挂接ProtoBuffer代码生成器protoc

手动用proto文件生成.h/.cc文件比较麻烦,可以借用notepad++的插件一劳永逸

在插件菜单NppExec(如果没有就先装这个插件)->Execute弹出的对话框中输入以下信息

[cpp]   
 
 
  1. "protoc.exe" --cpp_out $(CURRENT_DIRECTORY) --proto_path $(CURRENT_DIRECTORY) $(FULL_CURRENT_PATH)   

protoc.exe的路径可以自己指定本机的绝对路径

编译出的文件将自动放置到proto文件所在目录
五:与工程进行集成
需要把生成的.h和.cc导入到工程中去,在需要用到数据解析的文件中,引用该.h文件。
需要把libprotobuf.lib(或libprotobuf-lite.lib)添加到项目的依赖库中。

 

补充一条:一般用vs编的时候,默认需要在.cpp/.cc文件头部加预编译头文件#include "stdafx.h",但这又会修改.cc文件(原则上生成的.h/.cc文件不要修改),所以解决的方法就是:在VS的solution explorer中右键checklist.pb.cc-->属性-->预编译头(precompiled header)->预编译头(precompiled header)-->选择“不使用预编译头”("not using precompiled headers")

六:推荐做法:
建立文件夹pbbuff,在其中创建3个子文件夹:bin,lib,include,其中:
bin 存放proto.exe文件 
lib 存放libprotobuf.lib 文件
include 存放公共头文件
创建环境变量PBROOT,指向pbbuff文件。把%PBROOT%/bin添加到系统的环境变量PATH中,以便能识别protoc命令。

 

 

【参考:http://yleesun.blog.163.com/blog/static/294134022011112102117958/】

转载地址:http://wvqto.baihongyu.com/

你可能感兴趣的文章
废掉一个人最隐蔽的方式,是让他忙到没时间成长(转)
查看>>
springMVC3学习(二)--ModelAndView对象
查看>>
JAVA静态导入(inport static)详解
查看>>
修改Android模拟器的system分区,以及加入SuperSU
查看>>
键盘中断事件及其相关---小记
查看>>
Eclipse 代码显示不全的问题
查看>>
(笔记)Linux下查看CPU使用率的命令
查看>>
javaWeb学习总结(3)- Servlet基础
查看>>
jQuery 操作 radio、select、checkbox
查看>>
BaseActivity合集
查看>>
[Everyday Mathematics]20150112
查看>>
Android入门第六篇之ListView (一)
查看>>
C# Json格式字符串
查看>>
jQuery取得select选中的值
查看>>
Mahout
查看>>
linux-kernel/CodingStyle
查看>>
YY博客园UML用例图-活动图-状态图之博客模块
查看>>
《算法导论》为什么经典
查看>>
android之ScrollView里嵌套ListView(转)
查看>>
C# DataTable详细用法
查看>>