Windows下VC++使用protobuf

Protocol Buffers(protobuf)是Google提供的一个开源序列化框架,类似XML,JSON,其最大的特点是基于二进制,比传统的XML表示同样一段内容要短小得多。虽然是二进制数据格式,但并没有因此变得复杂,开发人员通过按照一定的语法定义结构化的消息格式,然后送给命令行工具,工具将自动生成相关的类,可以支持c++、java、python等语言环境。通过将这些类包含在项目中,可以很轻松的调用相关方法来完成业务消息的序列化与反序列化工作。

下面将说明如何在windows下VC++使用protobuf

一、前期准备

1、下载protobuf源代码,有两种方式选择:

源代码包地址:https://protobuf.googlecode.com/files/protobuf-2.5.0.zip

svn地址:http://protobuf.googlecode.com/svn/trunk/

二、编译protobuf

1、进入vsprojects目录,执行extract_includes.bat 提取项目头文件

这时候当前目录会生成include目录

2、打开项目文件protobuf.sln,编译libprotobuf 和 protoc

这时候编译目录会生成libprotobuf.lib和protoc.exe

注意了,debug编译后的文件用于debug项目,release编译后的文件用于release项目,否则会出错。

/********  无情的分割线 ********* /   
  作者:没有开花的树   
  博客:blog.csdn.net/mycwq   
/ *******   无情的copy  *********/   

三、在项目中使用protobuf

1、新建一个win32 控制台应用程序,命名为pbtest

2、把上面的include目录、libprotobuf.lib和protoc.exe放到工程目录下

3、写一个proto文件,保存为person.proto,代码如下:

message Person {
  required int32 id = 1;
  required string name = 2;
  optional string email = 3;
}
4、写一个批处理文件,保存为build.bat,代码如下:

protoc --cpp_out=./ person.proto
5、运行批处理build.bat,生成proto协议文件person.pb.h和person.pb.cc,加到项目中

6、修改项目属性VC++ 目录包含目录添加“include”

7、修改pbtest.cpp文件,代码如下:

#include <iostream>
#include <fstream>
#include <string>
#include "person.pb.h"

using namespace std;

#pragma comment(lib, "libprotobuf.lib")

int main(int argc, char* argv[])
{
	//校验协议版本
	GOOGLE_PROTOBUF_VERIFY_VERSION;

	Person person;

	//将数据写到person.pb文件
	person.set_id(123);
	person.set_name("Bob");
	person.set_email("bob@example.com");

	fstream out("person.pb", ios::out | ios::binary | ios::trunc);
	person.SerializeToOstream(&out);
	out.close();


	//从person.pb文件读取数据
	fstream in("person.pb", ios::in | ios::binary);
	if (!person.ParseFromIstream(&in)) {
		cerr << "Failed to parse person.pb." << endl;
		exit(1);
	}

	cout << "ID: " << person.id() << endl;
	cout << "name: " << person.name() << endl;
	if (person.has_email()) {
		cout << "e-mail: " << person.email() << endl;
	}

	getchar();
	return 0;
}
8、编译项目,效果如下:



demo下载:http://download.csdn.net/detail/cwqcwk1/6810611

参考:

http://blog.csdn.net/mycwq/article/details/17606527


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值