protobuff的安装和使用

本文详细介绍了在Windows 10环境下,如何从下载Protobuf开始,经过安装CMake,到编译Protobuf并解决常见错误的过程。随后,通过创建一个简单的Person消息示例,展示了如何在C++项目中使用Protobuf生成代码并进行序列化与反序列化操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

0.环境

       window10,C++

1.准备

1.1 下载protobuffhttps://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("mark@example.com");

    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 结果

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值