问题标签 [protoc]

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 投票
1 回答
956 浏览

compiler-errors - libprotoc 编译 protoc 文件,但不编译其中包含的其他 protoc(google grpc assistant annotations.pb.h no file or directory error)

我正在尝试用 C++ 生成 Google Assistant 库。我已经使用 protoc 编译器编译了embedded_assistant.proto文件,并获得了用于库的embedded_assistant.grpc.pb.hembedded_assistant.grpc.pb.cc文件。我创建了一个客户端文件ea_main.cc并将这些文件包含在其中。

当我尝试使用 g++ 编译器编译ea_main.cc时,出现此错误。

embedded_assistant.proto文件中有另一个 proto 文件包含在其中

似乎 protoc 没有为这些 .proto 文件编译或生成标头。当在google/api/中查看时,它们不存在。

这就是为什么 g++ 编译器会为缺少的 annotations.pb.h 文件提供错误。

为什么 protoc 没有编译包含在embedded_assistant.proto中的 proto ?我怎样才能得到这些文件?有什么问题吗?

0 投票
1 回答
239 浏览

python - scons:如何指定对外部构建目标的依赖?

protobuf用来从 . proto文件转换为 .cc/.h 文件。所以我有我SConscript的如下:

我发现,“环境”。SConscript 中的命令不是按顺序执行的(这就是为什么可以使用 scons -j20 并行构建目标的原因)。但有时问题是,因为“pb_my”的目标应该是在我从“my.proto”生成“my.pb.cc”之后构建的,所以scons会报告错误是先执行第二行。

那么如何指定第二行的目标只应在第一行完成后执行?

非常感谢。

0 投票
1 回答
8135 浏览

c++ - 协议缓冲区错误版本

我正在尝试安装 Caffe 库,但由于系统中安装了错误的 protobuf 版本,我遇到了编译问题。

我遵循了论坛中提出的许多方法,我认为这篇文章中讨论了最相似的问题。

在 caffe.pb.h 中,控件是:

但是在我的系统头文件(/usr/include/google/protobuf/stubs/common.h)中:

从终端命令 protoc --version 返回 libprotoc 3.2.0

所以我已经安装了 3.2 版本,但是系统头文件没有更新。上一篇文章中的一位用户评论说:“我想出了一种方法,首先在 PATH 变量中指定我想要的 protobuf,而不必删除其他版本的 protobuf(其他事情取决于那个旧版本)。”

有人可以逐步解释我如何遵循这个吗?或者我可以更新系统标题吗?有许多元素连接到 libprotoc,所以我想避免损坏它们。

谢谢

0 投票
1 回答
1663 浏览

cmake - PROTOBUF_GENERATE_CPP 二进制路径

PROTOBUF_GENERATE_CPP 如何知道从哪里获取 protoc 二进制文件?

我已经在本地编译了 protobuf,并且想将我的 CMakeLists.txt 指向已安装的二进制文件( myfolder/protobuf-install/bin/protoc )而不是系统二进制文件( /usr/bin/protoc )

通常对于 Boost,我只需将 BOOST_ROOT 设置为我安装的文件夹,它就会找到所有的 include_directories、库等。

Protobuf应该怎么做。我在 FindProtobuf.cmake 中没有看到任何前缀选项。

错误是

当然,上面的路径是在 myfolder/ 中,而不是在系统文件夹中。但是,当我将根路径明确声明为 myfolder/ 时,为什么 protobuf 会在系统路径中寻找包含

0 投票
1 回答
828 浏览

android - 如何使用 android studio protobuf 插件编译 protobuf 消息实现 Parcelable?

有 cmdline 选项可以生成消息实现 parcelable,如下所示:

protoc --javanano_out=optional_field_style=accessors,parcelable_messages=true:d:\ ./message.proto

如何使用 android studio protobuf 插件来做到这一点?

0 投票
1 回答
6123 浏览

protocol-buffers - 如何包含具有相互依赖关系的 .proto 文件

我有两个 .proto 文件,它们有两个相互依赖的包。

a.proto

b.proto

当我尝试生成 cpp 文件时,出现以下错误

# protoc -I. --cpp_out=. b.proto b.proto: File recursively imports itself: b.proto -> a.proto -> b.proto

如何实现?

注意:使用的协议版本是libprotoc 3.3.0

0 投票
2 回答
9501 浏览

http - gRPC 服务器错误处理程序 golang

我想了解 golang 和 gRPC 以及 protobuf 的良好实践。

我正在实现以下 gRPC 服务

我编译了protobufs。事实上,protobuf 给了我们一个从 http 到 grpc 的 httpproxy。

实现此服务的代码:

我想要一个带有消息“400 的默认错误消息”的 400 http 错误(在 http 代理中),该消息有效,但 http 错误始终为 500。

您知道有关此的任何帖子或文档吗?

0 投票
1 回答
687 浏览

swift - 生成 .pb.swift 模型时,包含单词“Id”的 Protobuf 字段名称将其大写为“ID”

我正在尝试使用 swift-protobuf:

我有Test.proto文件,我需要将其转换为Test.pb.swift

为此,我正在使用:

它生成很长的 .pb.swift 文件:

那么,为什么TestId转换为testID,例如为什么Id大写为ID?如何修复或避免这种大写行为?

0 投票
5 回答
4023 浏览

python - TensorFlow - 对象检测模块,尝试使用 protoc 时出现错误

遇到问题protoc,该行在 Windows 中不起作用。

我明白了errors

使用这条线

我收到这个错误

问题是什么??

0 投票
1 回答
2118 浏览

bash - 在 proto 文件的嵌套目录上运行 protobuf 编译器的问题

我有几个嵌套目录,每个都包含 proto 文件,并且许多 proto 文件依赖于位于根目录中某处的其他 proto。我正在使用这个脚本来尝试编译它们,并从一个目录中执行它,该目录包含带有 protos 的文件夹和我希望编译的 proto 类所在的文件夹。我现在遇到的问题之一是我遇到了protoc: command not found错误。

关于如何最好地做到这一点的任何想法?