protobuf的环境搭建及使用

protobuf

1:protobuf是一个跨语言,跨平台, 可扩展的序列化/反序列化数据结构的工具;
2: protobuf的使用基本步骤:
a:将要传递的数据结构做成 protobuf协议描述文件: .proto文件;
b:protobuf工具protoc将协议描述文件转成对应语言的代码(js, c++, c#, python等);
c: 使用代码来构造数据对象;
d: 使用数据对象的接口来初始化数据对象;
e: 利用自动生成的代码,将这个数据二进制序列化;
f: 传输二进制序列;
g: 在使用自动生成的代码反序列化(解码),生成数据对象使用;
3: protobuf优点:
json, xml 占用的空间比较大;
protobuf 占用的空间小,效率高;
protobuf也常用于应用层协议的编码和解码;

环境搭建

1: 下载protobuf源码: https://github.com/google/protobuf
2: 下载项目构建工具cmake: https://cmake.org/download/
完成cmake构建之后需要生成三个解决方案:libprotobuf、libprotoc、protoc,生成之后将Debug文件夹中的libprotobufd.lib、libprotocd.lib拉到项目中,在解决方案的属性中把这两个库给链接上。
3: 编写.proto协议文件,使用proto2或proto3
4: 使用protoc.exe和命令行生成对应语言的protobuf脚本,例如c++:

protoc.exe --cpp_out=./ person.proto

5: 把生成的代码文件拖到工程中,include .h文件
6: 把github下载的protobuf文件全部拖入项目中,在解决方案的C/C+±>常规->附加包含目录中设置对应的库文件根路径。例如C++对应protobuf的src文件夹。
7: 可以开始编写代码了

代码

#include <string.h>
#include <stdlib.h>
#include <string.h>

#include <iostream>
#include <string>
using namespace std;

#include "../proto/person.pb.h"

#if 0
int main(int argc, char** argv) {
   
	
	// 定义一个你要传送数据的对象;
	// 初始化好了这个对象的数据成员;
	Person p;
	p.set_name("xiaoming");
	p.set_email("xiaoming@bycwedu.com");
	p.set_age(34);

	printf("%s %s %d\n", p.name().c_str(), p.email().c_str(), p.age());

	// 将这个数据对象序列化;
	string out;
	p.SerializeToString(&out
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

微笑小星

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值