问题标签 [protobuf-c]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
1611 浏览

c++ - C++ Protobuf 添加一个已经分配的重复数字字段

我有一条简单的消息,其中包含许多重复的数字字段:

在运行时,数据到达时已经分配。这就是我尝试将其封装到消息中的方式(使用 arena):

  • 这是正确的用法吗?
  • 有没有办法告诉竞技场这个已经分配的数据属于一个已经初始化的消息?
  • 有没有办法告诉竞技场我要分配的内存(0)已经存在?
  • 如何最大限度地减少不必要的数据分配/解除分配?

更新: * @Azmisov 提出的相关问题:https ://github.com/protocolbuffers/protobuf/issues/8817

0 投票
1 回答
895 浏览

cocoapods - pod spec lint 错误:无法构建模块“Protobuf”,找不到文件:#import "google/protobuf/Any.pbobjc.h"

我想将一些代码推送到主 pod 中,此代码取决于Protobuf.

我尝试了以下三种方法来解决它。但我失败了。

以下是我的规范文件:

我用

并失败了。

0 投票
1 回答
119 浏览

protocol-buffers - 反编译protobufs-net的bin文件

我有一个 protobufs 的序列化 bin 文件,主要用 protobufs-net 编写。我想反编译它,看看它的结构。

我使用了一些工具,例如: https://protogen.marcgravell.com/decode

我也用过protoc

protoc --decode_raw < ~/Downloads/file.bin

这是我得到的结果的一部分:

我怎样才能反编译它?我想知道其中的结构并更改数据并制作一个新的 bin 文件。

0 投票
1 回答
160 浏览

protocol-buffers - 将 protobufs 文件发送到 API 端点

所以我有一个 API 端点,它应该获取 protobufs bin 文件。它是用 C# 编写的并使用 protobufs-net。

当我尝试将文件发送到此端点时,出现以下错误:

RUnexpected end-group in source data; this usually means the source data is corrupt

我尝试了以下请求(从 bin 文件解码):

当我尝试上传 bin 文件本身时,出现以下错误:

请求是:

我尝试了内容类型application/x-protobufapplication/octet-stream

我发送正确吗?我怎样才能发送文件。(我在这部分使用了 burp 套件)

0 投票
2 回答
661 浏览

java - 我怎么知道 protobuff 的 json 格式应该是什么样的?

我是 protobuf 的新手,我想将一些 protobuf 保存为 json 格式,并且知道 protobuf 的完整格式是什么。我试过只创建一个 protobuf 的空实例,并将其保存到 json,但这只会给我一个空的 json 对象,{}.

如果我为一个属性填写一个值,并对其进行序列化,我会在 json 中获得该属性,这很好,但我不想对我想要执行的每个 protobuf 的所有属性都执行此操作.

有没有办法让我在不为每个字段提供值的情况下查看 protobuf 的完整 json 格式?

笔记
  • 我在 Java 中使用 Google 的 protobuf 库,并且可以序列化和反序列化我的对象,我只是不确定如何为特定对象编写 json。
  • 我已经查看了这个 stackoverflow 问题以获取信息,但没有发现任何帮助。
0 投票
1 回答
83 浏览

python - 来自 pb 和 h5 文件的不同预测

我已经按照这个中型帖子的实现将我的 Keras 模型部署到 Android。我使用了具有 9 个节点的密集层以及输出层中的 softmax 激活,而不是帖子中使用的全局平均池化。我的模型的h5文件在python中预测准确,但是当我在Android中使用pb文件时,它的预测是错误的。此外,预测后的浮点值在不同的Android设备上也有一些不同。执行有问题吗?文件的第 16 行很可能有一个小错误ConvertToTensorflow.py(它应该keras_model.outputs代替keras_model.output)。我已更正它,但问题仍然存在。

0 投票
2 回答
314 浏览

c - 在非标准目录中的 CMakeLists 中使用 protoc 会出现“无法打开共享对象文件:没有这样的文件或目录”错误

我有一个使用CMake在Linux上生成 Makefile的 C 应用程序。该应用程序包含.c以及.proto文件。现在我需要生成.pb-c.c并在其中.pb-c.h使用protoc命令CMakeLists.txt以便当我执行cmake .cmake 时生成相应的 .pb-c 和 .pb-h。协议用作:

execute_process(COMMAND bash -c "${PROTOC_PATH} --c_out=${CMAKE_CURRENT_SOURCE_DIR}/ --proto_path=${PROTO_DIR}/ ${PROTO_DIR}/*.proto")

问题是我的 protoc 二进制文件和相关.so文件不在/usr/bin and /usr/libor中/usr/local/bin and /usr/local/lib。它们位于项目内的目录中 -$HOME/project-name/dependencies/bin/protoc and $HOME/project-name/dependencies/lib/libprotobuf.so.12

因此,我收到错误 -加载共享库时出错:libprotobuf.so.12:无法打开共享对象文件:没有这样的文件或目录

但是,如果我给出的命令为

execute_process(COMMAND bash -c "protoc--c_out=${CMAKE_CURRENT_SOURCE_DIR}/ --proto_path=${PROTO_DIR}/ ${PROTO_DIR}/*.proto")然后运行cmake .它可以正常工作,因为链接器能够从中获取.so文件/usr/lib

下面提到的是我的 CMakeLists.txt 文件的一部分

但由于上述错误,它不起作用。

对于那些可能会说这是重复的人,我已经调查并尝试了以下 SO 问题:

使用 CMake 打开链接器标志

我不明白 -Wl,-rpath -Wl,

CMake 链接到外部库

cmake 有类似 target_link_options 的东西吗?

CMAKE RPATH 不工作 - 找不到共享对象文件

https://serverfault.com/q/279068/435497

如何使用 CMake 为库添加链接器标志?

https://serverfault.com/a/926072/435497

0 投票
1 回答
825 浏览

c++ - Protobuf 中重复字段的问题。使用重复字段进行序列化/反序列化的更好方法是什么?

考虑以下 sensor.proto 文件,该文件使用重复字段来初始化多条消息。

现在我想将一些随机数据序列化到一个文件中。例如,我将拥有一个带有多个传感器的设备,因此 proto 中的重复文件。我使用以下代码。

要解析数据并打印出结果,我使用以下命令:

重现结果的主文件:

遍历整个传感器大小并获得正确的索引以显示适当的字段似乎并不直观。即使通过检查

将输出感觉不正确的尺寸 12,或

不会输出任何内容,因为它位于不正确的索引中。使用 libprotobuf 定义重复字段以更好地进行序列化/反序列化的更好方法是什么。


编辑:正如答案所暗示的,序列化到文件应该是

0 投票
0 回答
32 浏览

c++ - protobuf:new Prototype() 和 Prototype.Clear() 之间的区别

对于两段代码

我得到了后者的核心转储。那么这两段代码有什么区别呢?Prototype.Clear() 真正做什么?

0 投票
0 回答
153 浏览

protocol-buffers - Protobuf (C++) 为可选字段抛出“缺少必需参数”错误

我在使用 nanopb 的嵌入式设备和使用 protobuf-c 的台式电脑之间进行通信,但在解析编码消息时出错。嵌入式设备发送消息“响应”,其中包含不同消息类型 (ResponseContent) 的可选字段。另一条消息具有必填字段。这是消息定义

为什么 Response 消息中的 ResponseContent 类型是可选的,并且 has_response_content 参数设置为false时会弹出错误“缺少必填字段” ?注意:显然这发生在 *bool ParseFromArray(const void * data, int size)* 而不是 *bool ParsePartialFromArray(const void * data, int size)*