windows下protobuf的cpp使用(涵盖protoc编译器、依赖库的安装)

希望我们不仅把编程当成一份工作,更要将其当成一份热爱!!!

                                                                                                                -----潜意识中有个想成为一名厉害的程序员的梦

protobuf的作用

      核心作用就是用于对象序列化反序列化

      序列化的意思:就是将我们的对象转换为二进制字节流进行存储(文件)或者数据发送

      反序列化的意思:将存储的(文件)或者接收到的(数据传输) 二进制字节流转换为我们的对象。

protobuf的使用过程

  1. 通过.proto文件来定义我们的对象结构(类似于写一个类)
  2. 利用protoc编译器 将.proto文件 编译为:一个.cc文件、一个.h文件
  3. 将.cc 文件 .h文件 加入到项目之中,配置protobuf的包含目录、库目录、库依赖
  4. 编写示例代码

我们来展开上述过程

1.编写my_examble.proto文件,内容如下:

syntax = "proto3";  //protobuf版本
  
package example;  
  
// 定义一个简单的消息体 ,类似定义一个类

//其中=1,=2 不是赋值的意思,是用于标识字段的,可以理解为字段ID 
message SimpleMessage {  
    int32 id = 1;        // 消息ID   
    string message = 2;  // 消息内容  
}

2.安装protoc编译器、依赖库

为了结构清晰,另写了一篇windows下protobuf编译器、依赖库的cmake安装-CSDN博客

3.编译my_examble.proto

  • 进入my_examble.proto 所在目录,鼠标右键,选择”在终端中打开“ 进入命令行
  • 输入以下命令

protoc --proto_path=. --cpp_out=. my_examble.proto

  • 执行完毕后,出现以下两个文件

4.将上述文件加入到项目之中,配置protobuf的包含目录、库目录、库依赖

  • 新建控制台项目、拷贝上述文件到你的项目目录(注意这里是”项目目录“,不是”解决方案目录“,要不然到时候会找不到头文件的);添加文件到工程。
  • 设置平台为DEBUG X64(下面的图片关于平台的选择有误,懒得改了)
  • 配置这个,这个很重要
  • 添加libprotobufd.lib;libprotocd.lib库依赖

5.编写如下代码,运行

#include <iostream>  
#include <string>  
#include "my_examble.pb.h"  

int main() {
    // 初始化protobuf库  
    GOOGLE_PROTOBUF_VERIFY_VERSION;

    // 创建一个消息实例  
    example::SimpleMessage msg;
    msg.set_id(10);
    msg.set_message("Hello, Protobuf!");

    // 序列化消息  
    std::string serialized;
    if (!msg.SerializeToString(&serialized)) {
        std::cerr << "Failed to write msg." << std::endl;
        return -1;
    }

    // 反序列化消息  
    example::SimpleMessage msg2;
    if (!msg2.ParseFromString(serialized)) {
        std::cerr << "Failed to parse msg." << std::endl;
        return -1;
    }

    // 输出反序列化后的消息  
    std::cout << "ID: " << msg2.id() << std::endl;
    std::cout << "Message: " << msg2.message() << std::endl;

    // 清理protobuf库使用的所有全局对象  
    google::protobuf::ShutdownProtobufLibrary();

    return 0;
}

运行结果:

  • 15
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值