频道栏目
首页 > 资讯 > Windows Phone > 正文

Windows下VC++使用protobuf

14-01-05        来源:[db:作者]  
收藏   我要投稿

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

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

一、前期准备

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

 

二、编译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 
#include 
#include 
#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

 

相关TAG标签
上一篇:Clojure 学习入门(13)—— binding
下一篇:利用404页面玩转新意思
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站