protobuf安装和嵌套定义

告别TwinCAT:手把手教你用IgH EtherCAT Master在LinuxCNC上搭建实时运动控制平台 本文详细介绍了如何利用IgH EtherCAT Master和LinuxCNC搭建开源实时运动控制平台,替代商业软件TwinCAT。通过分步指南,包括实时Linux环境配置、EtherCAT主站安装、LinuxCNC集成及多轴同步控制实现,帮助开发者构建高性能、低成本的工业自动化解决方案。 阅读详情

背景

博主因为公司项目原因,客户端和服务端通信采用了protobuf协议,关于protobuf协议,不明白的自行百度,这个协议因其高效安全性,还是蛮常见的。
博主也是第一次安装使用,定义协议文件时发现不知道如何嵌套定义结构了,摸索。

安装

建议直接参考git上的README

  1. 下载https://github.com/google/protobuf,解压
  2. 需要以下依赖工具autoconf automake libtool curl make g++ unzip
  3. 进入根目录./autogen.sh
  4. 安装时出现
     If this token and others are legitimate, please use m4_pattern_allow.
     See the Autoconf documentation.
     autoreconf: /usr/bin/autoconf failed with exit status: 1

原来缺少一个工具libtool,安装:

sudo apt-get install libtool  

之后为了保证不出错 ,还需要安装一个工具libsysfs-dev

sudo apt-get install libsysfs-dev
  1. ./configure (更改安装路径的方式:–prefix=/usr/local/protobuf)

  2. make、make check、make install

  3. 配置

export LD_LIBRARY_PATH=/usr/local/lib  否则会出现找不到库文件

protobuf嵌套结构定义

示例协议文件:

demo.proto:
syntax = "proto3";
package demo;  
message Point {  
    float posX = 1;  
    float posY = 2;  
    float posZ = 3;  
} 

message Layer {
  bytes name = 1;
}

message Draw {
  repeated Layer layers = 1;
  Point centerpoint = 2;
}

protoc编译出c++的文件
使用时发现:
对于可重复的Layer可以使用add_layers()赋值,但是centrpoint却没有类似set或add的方式赋值。

打开demo.pb.h搜索一下,发现centrpoint只有两个疑似的函数set_allocated_centerpoint()和mutable_centerpoint(),后续查阅发现,这两个函数都能设置centpoint值

两种方式

  1. mutable_centerpoint():
demo::Point *p; 
demo::Draw draw;
p = draw.mutable_centerpoint(); //返回指针
p->set_posx(22);
printf("%f\n", draw.centerpoint().posx());
  1. set_allocated_centerpoint():
demo::Draw draw;
demo::Point *p = new gdpdraw::Point; 
p->set_posx(22);
draw.set_allocated_centerpoint(p);
printf("%f\n", draw.centerpoint().posx());

请关注我的订阅号

订阅号.png

保姆级教程:用Unity为麒麟系统打包Linux应用(含路径权限全攻略) 本文提供了一份详细的Unity跨平台开发指南,重点介绍如何在麒麟系统上打包和部署Linux应用。从开发环境配置、路径权限处理到性能优化和常见问题解决,全面解析了Unity项目在国产操作系统上的适配流程,帮助开发者高效完成跨平台应用开发。 阅读详情

相关推荐

Matlab实战:用递归最小二乘法(RLS)搞定动态系统参数辨识(附完整代码)

本文通过Matlab实战,详细介绍了如何利用递归最小二乘法(RLS)进行动态系统参数辨识。文章从理论优势切入,提供了完整的仿真数据生成、RLS算法核心实现代码,并对参数收敛过程、预测误差及不同遗忘因子的影响进行了可视化分析与性能评估,为工程实践提供了清晰的指南。

weixin_29035405的博客 502

grpc+python解析复杂的字典嵌套、列表嵌套参数

文章目录前文应用 前文 关于grpc的介绍和初步应用,看这篇:https://blog.youkuaiyun.com/weixin_42681866/article/details/121509556 本篇主要写出如何应用复杂的protobuf类型 应用 我们在写json的时候,最常写的格式就是字典嵌套列表,或者列表嵌套字典,对于这两者在grpc里如何实现protobuf转换呢? 比如这样一个格式(示例一): {"food": {"fruit":"apple", "meat": ["pork", "beaf"], "e

weixin_42681866的博客 3021

小红书私信接口与Hook技术实战:微信跳转卡片的合规与破解之道

本文深入探讨了小红书私信接口与Hook技术的实战应用,重点解析了微信跳转卡片的合规使用与破解方法。通过官方私信接口的合规玩法与Xposed框架的Hook技术对比,为开发者提供了技术选型指南和实战建议,帮助实现高效的用户跳转与转化。

weixin_30399821的博客 729

protobuffer的嵌套使用

1、定义嵌套protobuffer message ***IpaddressPair{ bytes local_ip = 1; bytes remote_ip = 2; } message ***ConnectionStatus{ bool connected = 1; bytes peer_id = 2; ***IpaddressPair ipaddr_pair = 3; } 2、使用这个mutable_ipaddr_pair函数会在类里new一个***IpaddressPai

yudelian的博客 1610

【WRF-Urban运行】WRF-SLUCM耦合建模参数设置及模拟运行

WRF-SLUCM耦合建模参数设置及模拟运行

WW、forever的博客 1723

基于STM32设计的智能井盖(Lora组网+4G上云)_423

设计并实现了一种基于 STM32 与 Lora 通信技术的智能井盖监测系统。系统采用 STM32F103C8T6 作为核心控制器,在井盖节点端集成水位检测、有害气体检测、倾斜角度检测以及 GPS 定位等功能模块,对井盖内部环境状态和姿态变化进行实时监测。各井盖节点通过 Lora 无线通信方式组成网络,将采集的数据发送至主机(网关)进行汇聚处理。

717

protobuf文件嵌套结构实例

protobuf文件嵌套结构实例   2013-08-22 14:10:49|  分类: 开源项目|举报|字号 订阅 class LogonReqMessage : public ::google::protobuf::MessageLite {  public:  LogonReqMessage();  virtual ~LogonR

linuxheik的专栏 4861

Coze 打通飞书多维表格,实现数据增删改查操作实战详解

基于Coze 打通飞书多维表实现数据录入系统实战详解

congge 5779

protobuf复杂场景下的使用,包含多层嵌套结构体,repeated等(六)

protobuf复杂场景使用,包含多层结构体嵌套,repeated等成员参数情况。

蜗牛的专栏 3349

【机器学习与数据挖掘实战 | 商务】案例03:基于k近邻算法的非侵入式电力负荷监测与分解的电力分析

本案例结合非侵入式电力负荷监测与分解的案例,重点介绍了在数据可视化的辅助下k近邻算法的应用。首先利用数据可视化寻找数据的特征,构建特征集合。然后构建k近邻模型,利用构建的特征集合训练模型,接着利用该模型对单一设备所属类别进行判定,最后计算实时用电量。

Morse_Chen的博客 2302

让 ABAP 内表真正释放内存:从 CLEAR、FREE 到打破 Table Sharing 的实战技巧

ABAP内表内存管理的关键在于理解其运行时结构:DELETE操作仅逻辑删除行而不会释放内存,CLEAR或FREE才能真正回收内存。常见的误区包括误判空表状态和忽视内表共享机制。实际应用中,大表筛选后应采用VALUE表达式或逐行插入方式重建表体以释放内存。典型案例显示,正确处理内表内存可显著降低SAP Gateway和批处理程序的内存消耗,提升系统稳定性。开发时需结合调试工具观察内存状态,避免因共享机制导致无效回收。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 324

Protobuf 高级特性详解 —— 嵌套消息、Oneof 字段与自定义选项

嵌套消息允许在一个.proto文件中定义多个消息类型,并将一个消息作为另一个消息的字段。这种设计非常适合表达层级关系或复合结构的数据模型。user";// 指定生成的 Go 包路径(生成源码的路径和包名,前面是路径后面是包名,可以自己定义)user";//这个可以生成在当前目录下// 定义 Address 消息// 定义 UserInfo 消息,引用 Address// 嵌套 Address 消息oneof字段是一组字段的集合,最多只有一个字段可以被设置。

Landcc的博客 1616

有之以为利,无之以为用,在 RAP 开发里的虚实取舍

摘要(149字) SAP RAP框架通过"有"与"无"的哲学平衡实现业务应用价值。其"有"体现在CDS视图、行为定义、服务绑定等具体对象,为系统提供形体;而"无"则表现为保留的扩展空间、未暴露的实现细节和框架托管的生命周期。在采购审批应用中,RAP既通过明确定义的行为模型建立业务语义,又通过验证、动作等机制保持灵活性。这种架构既确保核心功能稳固,又为未来演进留出余地,印证了"有之以为利,无之以为用"的技术智慧

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1302

Protobuf详解与使用

protobuf是一种比json和xml等序列化工具更加轻量和高效的结构化数据存储格式,性能比json和xml真的强很多,毕竟google出品。官网:所有的message必须定义到一个文件中,且文件的后缀名为.proto。例如我们定义的bike.proto文件//响应代号//验证码//失败原因// 手机号码// 验证码// 响应代号// 验证码// 手机号码// 充值金额// 响应代号// 验证码// 最新的余额// 响应代号// 验证码// 响应代号。

m0_65635427的博客 2504

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

proto3安装与使用

windows 系统: 1.下载proto3压缩包 https://github.com/google/protobuf/releases 直接解压到一个路径即可,把bin文件夹添加到系统path里面。cmd运行protoc --version 2.新建一个demo.proto文件,cd进入文件目录,protoc --cpp_out=. demo.proto。即可生成.cc和.h文件...

qq_38391187的博客 6234

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Windows protoBuf 安装+学习

protobuf学习

weixin_48102095的博客 2503

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Go语言中使用protobuf开发者指南

protobuf是什么? 官方给出的定义是:Protocol buffers are Google’s language-neutral, platform-neutral, extensible mechanism for serializing structured data – think XML, but smaller, faster, and simpler. You define how you want your data to be structured once, then you ca

Xiao_W_u的博客 1843

PHP使用protobuf3序列化常见数据格式

1.php安装protobuf3 安装过程就不详细说明,请自行百度或参考以下文档。 参考: 安装https://github.com/protocolbuffers/protobuf/tree/master/php 官网参考文档:https://developers.google.com/protocol-buffers/docs/reference/php-generated?hl=zh-cn 1.Messages .proto文件 syntax = "proto3"; package test; mes

pcl__0522的博客 1186

5分钟学会lua-protobuf:从安装到第一个编码示例

lua-protobuf是一个轻量级的Lua模块,专门用于处理Google Protocol Buffers(protobuf)数据。它提供了高效的protobuf编解码功能,让Lua开发者能够轻松地在项目中集成protobuf数据交换格式。本文将带你快速掌握lua-protobuf的安装方法和基本使用流程,即使是Lua新手也能在5分钟内完成从环境搭建到实际编码的全过程。 ## 📦 快速安装:

gitblog_00693的博客 361

protobuf学习笔记

protobuf官方网址:https://developers.google.com/protocol-buffers github源码:https://github.com/protocolbuffers/protobuf 1. protobuf是什么 “Protocol buffers are Google’s language-neutral, platform-neutral, extensible mechanism for serializing structured data – think

Aajbelieve的博客 2926

Golang微服务-protobuf

protobuf gRPC是一款语言中立、平台中立、开源的远程过程调用系统,gRPC客户端和服务端可以在多种环境中运行和交互,例如用java写一个服务端,可以用go语言写客户端调用 数据在进行网络传输的时候,需要进行序列化,序列化协议有很多种,比如xml, json,protobuf等 gRPC默认使用protocol buffers,google开源的一套成熟的结构数据序列化机制。 序...

木子七的博客 761

ProtoBuf 入门教程

/ 指定protobuf的版本,proto3是最新的语法版本// 定义数据结构,message 你可以想象成java的class,c语言中的struct// 定义一个string类型的字段,字段名字为data, 序号为1// 定义一个int32类型的字段,字段名字为status, 序号为2//说明:proto文件中,字段后面的序号,不能重复,定义了就不能修改,可以理解成字段的唯一ID。消息(message),在protobuf中指的就是我们要定义的数据结构。

小哥(xpc) 860

快速开始:使用 apple/swift-protobuf 构建高效数据序列化应用

想要在 Swift 开发中实现高效的数据序列化和网络通信吗?今天我将为你介绍苹果官方的 **Swift Protobuf** 工具,这是构建高性能 iOS 和 macOS 应用的终极解决方案!😊 **Swift Protobuf** 是苹果官方维护的 Protocol Buffers 实现,专门为 Swift 语言优化设计。作为 Google 开源的高效数据序列化框架,Protocol Buf

gitblog_00474的博客 339

通信协议以及protobuf使用、语法指南一

文章目录1.设计通信协议2.协议设计范例范例一 IM即时通讯协议范例二 云平台节点服务器 1.设计通信协议 为了能让对端知道如何给包分界,⽬前⼀般有以下做法: 以固定⼤⼩字节数⽬来分界,如每个包100个字节,对端每收⻬100个字节,就当成⼀个包来解析; 以特定符号来分界,如每个包都以特定的字符来结尾(如\r\n),当在字节流中读取到该字符时,则表 明上⼀个包到此为⽌ ; 固定包头+包体结构,这种结构中⼀般包头部分是⼀个固定字节⻓度的结构,并且包头中会有⼀个特定的字段指定包体的⼤⼩。收包时,先接收固定字节

谢白羽 1751

微服务-ProtoBuf认识与使用

ProtoBuf认识与使用

huan 1112

【go微服务】跨语言RPC接口工具--protobuf语法与原理解读以及应用实战

Protobuf是Protocol Buffers的简称,它是Google公司开发的一种数据描述语言,是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化。 它很适合做数据存储或 RPC 数据交换格式。 可用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式。目前提供了 C++、Java、Python 三种语言的 API。 Protobuf刚开源时的定位类似于XML、JSON等数据描述语言,通过附带工具生成代码并实现将结构化数据序列化的功能。

景天科技苑 9万+
上一篇: vm拷贝IP冲突
下一篇: lnmp编译安装搭建
码哥说
博客等级 码龄8年 5645粉丝 172原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码哥说

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值