Windows下VC++使用protobuf
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.proto5、运行批处理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下载:https://download.csdn.net/detail/cwqcwk1/6810611
参考:
https://blog.csdn.net/mycwq/article/details/17606527
推荐阅读
-
python使用wmi模块获取windows下的系统信息 监控系统
-
解析windows下使用命令的方式安装mysql5.7的方法
-
Windows7下Python3.4使用MySQL数据库
-
Windows下Python使用Pandas模块操作Excel文件的教程
-
在windows下使用淘宝的nginx插件 nginx_concat_module (附下载地址)
-
WINDOWS下givm安装使用方法(编译程序)
-
windows10下使用IE浏览器出现报错的解决办法
-
Cwrsync如何使用可以实现Linux与windows下的文件同步详解
-
Windows7下安装使用MySQL8.0.16修改密码、连接Navicat问题
-
Windows下使用性能监视器监控SqlServer的常见指标