首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >动态读取protobuf数据

动态读取protobuf数据

原创
作者头像
8菠萝
发布于 2022-06-09 21:30:38
发布于 2022-06-09 21:30:38
1.5K0
举报
文章被收录于专栏:菠萝上市没有菠萝上市没有

1.流程

protobuf 版本3.12.1

  1. 使用Importer 动态读入proto文件原型
  2. 获取DescriptorPool
  3. 使用Message名称获取对应的Prototype
  4. 使用DynamicMessageFactory 生产Message
  5. 使用Message 读取Protobuf数据

2. test.proto

代码语言:text
复制
    message Test {
        optional string name = 1;
    }

3.简单举例

代码语言:c
复制
        Importer import(&tree, nullptr);
        // 可以加载多个文件(依赖)
        import.Import("/path/test.proto");
        import.Import("/path/other.proto");

        auto pool = import.pool();
        auto desc = pool->FindFileByName("test.proto");
        google::protobuf::DynamicMessageFactory factory;
        const google::protobuf::Message *prototype_msg = factory.GetPrototype("Test"); 
        auto instance = prototype_msg->New();
        instance->ParseFromString(contents);

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

目录
  • 1.流程
  • 2. test.proto
  • 3.简单举例
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档