问题标签 [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 投票
3 回答
8695 浏览

java - 如何在客户端使用 Java 读取 gRPC 中的元数据

我正在使用 Java 和 Protoc 3.0 编译器,下面提到了我的 proto 文件。 https://github.com/openconfig/public/blob/master/release/models/rpc/openconfig-rpc-api.yang

为了进行服务调用(rpc TelemetrySubscribe),首先我需要读取具有订阅 ID 的标头,然后开始读取消息。现在,使用 Java 我能够连接到服务,我确实引入了拦截器,但是当我打印/检索标头时它为空。我调用拦截器的代码如下,

这是读取元数据的拦截器代码。

想知道有没有其他方法可以读取包含订阅 ID 的元数据或第一条消息?我只需要读取具有订阅 ID 的第一条消息,并向服务器返回相同的订阅 ID,以便可以开始流式传输

从上面的 python 代码我可以很容易地检索元数据对象,不知道如何使用 Java 检索相同的对象?

阅读元数据后,我得到的是:Metadata({content-type=[application/grpc], grpc-encoding=[identity], grpc-accept-encoding=[identity,deflate,gzip]})

但我知道从元数据到它还有一条线,那就是

如何从包含订阅 ID 的 Header 中提取最后一个响应。我确实尝试了很多选择,但我在这里迷路了。

0 投票
1 回答
1036 浏览

c# - gRPC 不生成 *grpc.cs

我正在尝试使用 .bat 文件生成 grpc .cs 文件,但没有生成 messageGRPC.cs 文件。但是,message.g.cs 确实被创建了。没有错误,我什至尝试对路径进行硬编码并以管理员模式运行命令窗口,结果相同。

再次,message.g.cs 确实生成正确,但 messageGRPC.cs 没有。

在我的项目中,我从 NuGet 安装了 Google.Protobuf、Google.Protobuf.Tools、Grpc、Grpc.Core 和 Grpc.Tools。

有什么我做错了吗?

0 投票
2 回答
2850 浏览

php - 在“Message.proto”中找不到类“Google\Protobuf\Internal\Message”

我正在开发一个带有协议缓冲区的项目,在我编译了一个 proto 文件之后,我似乎无法包含它,也没有运行它,因为它一直给我这个确切的错误: PHP Fatal error: Class 'Google\Protobuf\Internal\Message' not found in /app/generated_files/message.php on line 13

message.php我有一个文件自动生成的.proto文件,它包括Google\Protobuf\Internal\Message.

在阅读protobuf github 问题时,我发现一个人也有同样的问题,他认为这是作曲家的错。但是在我的情况下,这不是问题,因为我没有使用作曲家。

我使用 pecl 来安装协议缓冲区,并且我的库protobuf.so位于/etc/php5/apache2/XXXXXXXXX. 我还在extension=protobuf.sophp.ini的最后一行添加了。

请记住,我对所有事情都使用 docker,因此它可能有所不同,但我仍然怀疑。

0 投票
1 回答
306 浏览

protocol-buffers - 防止 Protobuffer 重命名字段(类、成员、枚举项)

我正在尝试将项目从 Google Protocol Buffers 3.0.0-beta-2 移植到 3.1.0。重新编译我的.proto文件后,我注意到由于 protoc 强制执行我没有选择的编码标准并相应地重命名字段,我的项目出现了许多编译错误。我不想在项目内部重命名例如MDDatatoMddataXYServerto Xyserver,因为缩写的预期含义现在已经丢失,并且可能会在未来的协议缓冲区版本中发生变化。

到目前为止,我已经在 C# 部分看到了这种行为,但不确定为 C++ 生成的代码是否也是这种情况。

TL;博士:

有没有办法在 Google Protocol Buffer 的 Proto Compiler 中禁用自动代码样式更改(并保留我自己的格式)?

0 投票
1 回答
623 浏览

tensorflow - 使用g++编译一个使用Tensorflow的C++程序

我正在尝试编译一个使用 Tensorflow 的 c++ 程序,但我遇到了一些问题。

基本思想是首先使用 bazel 生成一个动态库 .so 文件并将其传递给 g++。但似乎在那个阶段之前就出现了问题——我的程序首先在 tensorflow 中包含一个 .h 文件

我想我将正确的参数传递给 g++,因为它确实找到了头文件,但它在抱怨

当我打开 device_attributes.pb.h 文件时,我看到这里产生了错误

11 #if GOOGLE_PROTOBUF_VERSION < 3002000
12 #error This file was generated by a newer version of protoc which is
13 #error incompatible with your Protocol Buffer headers. Please update
14 #error your headers.
15 #endif
16 #if 3002000 < GOOGLE_PROTOBUF_MIN_PROTOC_VERSION
17 #error This file was generated by an older version of protoc which is
18 #error incompatible with your Protocol Buffer headers. Please
19 #error regenerate this file with a newer version of protoc.
20 #endif

起初我以为是因为我机器上的协议太旧了;然后我尝试修改 PATH 以便它首先找到 protoc 的较新版本(3.2.0),但问题仍然存在;我什至在没有旧协议的另一台机器上尝试了同样的事情,但问题仍然存在。

我想知道是否有人以前遇到过类似的问题。谢谢。

0 投票
0 回答
664 浏览

javascript - 编译多个 protobuf 文件时权限被拒绝

尝试使用 grpc-tools 在 Window 的单个目录中编译多个 protobuf 文件,但它给出了错误 Permission denied。

如何在单个目录中编译多个文件

0 投票
1 回答
1522 浏览

go - protoc 从属于不同包的两个 proto 文件生成 golang 代码

我有两个 proto src 文件,在同一个文件夹中,假设:

第一个是foo.proto

第二个是bar.proto,需要 import foo.proto

你可以看到它们有不同的包名,当我使用 protoc 生成它们时,(foo.proto 作为第一个原因),我生成了两个 golang 文件,但我必须把它们放到 2 目录中(你可以'不要将不同的包名文件放在同一个目录中,golang)

但是在bar.pb.go导入内部使用的是本地导入路径,就像

我正在调整 protoc 提供的几个选项,但没有成功,有什么建议吗?

0 投票
1 回答
776 浏览

windows - protobuf java运行时安装

我正在尝试为 Windows 上的协议缓冲区构建 Java 运行时库。我已经下载并安装了 protoc 的二进制发行版: protoc-3.3.0-win32 。我已经从https://github.com/google/protobuf下载了 protobuf-master 。并尝试使用 Maven 构建 Java 运行时库。我mvn test从 D:\protobuf-master\java运行

这些错误发生在我运行时mvn test

0 投票
1 回答
511 浏览

python - 查找自定义 protobuf 插件时出错

当我尝试.proto使用我下载的插件从文件中生成代码时,它可以工作。例如,使用以下作品:

protoc --python_out=. --plugin=protoc-gen-python=$GOPATH/bin/protoc-gen-python ./hello.proto

也是如此

这些命令会生成适当的存根(几乎是插件希望它们做的事情)。但是,以下给出了错误:

protoc --custom_out=. --plugin=protoc-gen-custom=my-plugin.py ./hello.proto

错误只是说

my-plugin.py: program not found or is not executable --custom_out: protoc-gen-custom: Plugin failed with status code 1.

即使my-plugin.py在我当前的目录中

0 投票
2 回答
1141 浏览

plugins - 自定义协议插件解析不适用于自定义选项

我正在尝试编写一个需要我使用自定义选项的 protoc 插件。我定义了我的自定义选项,如示例中所示(https://developers.google.com/protocol-buffers/docs/proto#customoptions):

我使用它如下:

但是,当我阅读解析后的请求时,“Hello”消息的选项字段为空。

我正在做以下阅读

当我打印“请求”时,它只是给了我这个

如图所示,即使我在 .proto 文件中定义了选项,选项字段也是空的。我的语法对于定义自定义选项是否不正确?还是我的protoc版本有问题?