Windows VS2008 使用 protobuf(version2.5.0) 的实例
2014-06-17 12:58
417 查看
示例代码下载地址:http://download.csdn.net/detail/jff316948714/7510243
第一步:下载 protobuf-2.5.0.zip 地址:http://download.csdn.net/detail/jff316948714/7510231
第二步:解压 并 打开 路径下的 protobuf-2.5.0\vsprojects\protobuf.sln 工程
第三步:运行 extract_includes.bat 文件,生成 include 文件夹
第四步:编译其中的 libprotobuf 和 protoc 工程(编译 protoc 工程时,如果有误,请注意观察错误原因,我这里报错缺少 libprotoc.lib ,所以编译完 libprotoc 后在编译一遍 protoc ,成功),生成 Debug 文件夹
第四步:新建一个 pbtest 的 控制台工程,并将上面生成的 include文件夹、 Debug 文件夹下 的 libprotobuf.lib 和 protoc.exe 三个文件放到我们新建的工程目录下。
第五步:新建一个 build.bat 文件 和 person.proto 文件 (notepad++ 创建、保存、添加后缀名即可 根据个人爱好,工具自选),并放到我们的工程目录下,与 protoc.exe 在同一路径下。 build.bat 文件 和 person.proto 文件文件内容如下:
这个应该很好理解吧! 运行build.bat 文件 protoc.exe 会编译 person.proto 文件 --cpp_out 是生成文件的类型为 C++ 类型,除此之外还可以生成 java 类型 , python 类型, =../
是输出路径,他会输出到 build.bat 的上一层目录下。
运行build.bat文件,将会在build.bat的上层目录下生成 perso.pb.h 和 person.pb.cc 两个文件。
至此,我们的工程目录下的文件应该有 如下内容:看图
第六步:配置我们的工程属性信息:
项目右击 ---> 属性 ---> 链接器 ---> 输入 ---> 附加依赖项 ---> 添加 libprotobuf.lib
项目右击 ---> 属性 --->C/C++ ---> 附加包含目录 ---> 引入 我们添加的 include 文件(例:D:\VisualProject_08\pbtest\pbtest\include)
第七步:完事具备,只差代码
#include "stdafx.h" #include <iostream> #include <fstream> #include "person.pb.h" using namespace std; #pragma comment (lib, "libprotobuf.lib") int _tmain(int argc, _TCHAR* argv[]) { //GOOGLE_PROTOBUF_VERIFY_VERSION; Person person; person.set_id(8888); person.set_name("Kobe"); person.set_email("1990@qq.com"); //将数据写到person.pb文件 fstream out("person.xml", ios::out | ios::binary | ios::trunc); person.SerializeToOstream(&out); out.close(); //从person.pb文件读取数据 fstream in("person.xml", ios::in | ios::binary); if (!person.ParseFromIstream(&in)) { cerr << "Failed to parse person.xml." << 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; }
编译无误,运行输出:
protocol Buffer 概述请查看:
http://baike.baidu.com/link?url=FXIwsk0G0imMeqap3LAmiajkI9Rk5bhHD-YuLIwhIuXWqJl8JyBBZPNzzmwoKxLbMzkJtgAwtnlneIrBfknghK
相关文章推荐
- java中使用Protobuf的实例(Demo)
- java中使用Protobuf的实例(Demo)
- java中使用Protobuf的实例(Demo)
- java中Protobuf的使用实例
- ProtoBuf 的java使用
- Beetle使用Protobuf.net进行对象序列化传输
- Google Protobuf 使用介绍
- 使用protobuf定义消息
- google protobuf 使用心德
- Google Protobuf 使用介绍 .
- Java protobuf框架使用向导
- linux下Google的Protobuf安装及使用笔记
- Akka和ProtoBuf的简单实例
- 如何在Linux环境下在CodeBlock中安装使用Google Protobuf
- c#序列化与反序列化通用方法, 使用protobuf-net实现
- Google Protobuf 使用介绍
- Google protobuf的安装及使用
- [转]Android上GTalk以及Push机制的XMPP数据选择使用protobuf格式而非XML格式
- google protobuf java 简单使用
- windows下面编译protobuf,生成.a文件供android NDK使用