找回密码
 立即注册
查看: 282|回复: 0

protobuf 测试

[复制链接]
发表于 2022-5-6 19:06 | 显示全部楼层 |阅读模式
官网地址:
Language Guide (proto3)  |  Protocol Buffers  |  Google Developers
(1) 编写.proto文件
syntax = "proto3";
package hello;
message Hello
{
         int32 id = 1;
         string name = 2;
         string email = 3;
}保存为 hello.proto
(2) 编译.proto文件,生成对应语言的操作文件。
    若需要python的操作文件,可以执行  protoc --python_out=./ hello.proto  对应生成hello.py的文件。
    若需要c++的操作文件,则执行:protoc hello.proto --cpp_out=./out 对应生成http://hello.pb.cc hellp.pb.h 文件
(3) 编写源文件 hello.cpp
       /*hello.cpp*/
#include <cstdio>
#include <cstring>
#include "out/hello.pb.h"

using namespace std;
using namespace hello;

int main()
{
    Hello a;
    a.set_id(101);
    a.set_name("kiqin");
    a.set_email("769232001@qq.com");
    string tmp;
    bool ret = a.SerializeToString(&tmp);
    if (ret)
    {
        printf("encode success!\n");
    }
    else
    {
        printf("encode faild!\n");
    }
    Hello b;
    ret = b.ParseFromString(tmp);
    if (ret)
    {
        printf("decode success!\n id= %d \n name = %s\n email = %s\n",
        b.id(), b.name().c_str(), b.email().c_str());
    }
    else
    {
        printf("decode faild!\n");
    }
    return 0;
}
(4) 编写Makefile
注意修改protobuf路径为自己安装所在路径
CC = g++
TARGET = hello
CFALGS = -Wall -g -I./out -I/usr/local/protobuf/include
LDFLAGS = -L/usr/local/protobuf/lib
LIBS = -lprotobuf
OBJ = hello.o hello.pb.o

$(TARGET):$(OBJ)
                $(CC) $(CFLAGS) $(LDFLAGS) $(LIBS) -o $@ $^
hello.o:hello.cpp
                $(CC) -c $(CFLAGS) $(LDFLAGS) $(LIBS) -o $@ $<
hello.pb.o:./out/hello.pb.cc
                $(CC) -c $(CFLAGS) $(LDFLAGS) $(LIBS) -o $@ $<
clean:
                rm -fr *.o $(TARGET)
(5) 编译
     执行命令 make,正常情况下会在out文件夹下生产一个main的可执行文件



  若未正确安装,则会出现 大量的 undefined reference to `google::protobuf 错误

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2025-5-3 14:17 , Processed in 0.136622 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表