0.环境
window10,C++
1.准备
1.1 下载protobuff:https://github.com/protocolbuffers/protobuf/releases , 我下载的是3.10
1.2 安装cmake: https://cmake.org/download/
1.3 cmake我下载的是目前最新的3.16,编译生成的protobuff,发现加进项目时报错: 未发现<google/protobuf/port_def.inc>,浪费了很多时间找问题,最终下了3.14版本没有出现该问题。
2.编译protobuff
2.1 解压protobuff
2.2 Browse Source选择protobuff的cmake目录
2.3 Browse Build选择存放路径
2.4 点击左下角的 "Configure" 进行相应的配置
2.5 点击"Generate",生成项目
2.6 点击"Open Project",打开项目编译,主要编译2个项目即可:libprotobuf, protoc
2.7 生成libprotobfd.lib和protoc.exe
3.测试验证
3.1 新建一个myprotobuff.proto的文本文件
syntax = "proto3";
package tutorial; //包名,命名空间
message Person {
int32 id = 1;
string name = 2;
string email = 3;
}
3.2 编译,生成c++的头文件和源文件
protoc myprotobuff.proto --cpp_out=.
syntax:proto协议,默认使用的是2
--cpp_out:生成位置
3.3 项目中使用
3.3.1 包含目录
3.3.2 添加库
3.3.3 把头文件,源文件加载进项目
3.3.4 代码
#include "stdafx.h"
#include "myprotobuff.pb.h"
int main()
{
GOOGLE_PROTOBUF_VERIFY_VERSION;
tutorial::Person person;
person.set_id(123456);
person.set_name("Mark");
person.set_email("[email protected]");
std::string out = person.SerializeAsString();
std::string data;
person.SerializeToString(&data);
std::cout << "string : " << out <<", data : " << data << std::endl;
tutorial::Person p;
p.ParseFromString(out);
std::cout << "id = " << p.id() << ", name = " << p.name() << ", email : " << p.email() << std::endl;
return 0;
}
3.3.5 结果