当前位置: 首页 > 知识库问答 >
问题:

正在导入google/protobuf/*。使用protoc-c时使用protos

时同
2023-03-14

我在我的系统上安装了protoc、protoc-c、libprotobuf和libprotobuf-c。我有。导入时间戳的原型文件。原型如下:

syntax = "proto3";

import "google/protobuf/timestamp.proto";

message DeviceCtx {

    google.protobuf.Timestamp CID = 1;

    uint32 ContextLen = 2;

    bytes ContextBuf = 3;

}

我正在使用proc-c为相同的生成C绑定,使用如下:

home>protoc-c --c_out=. a.proto
home>ls a.pb-c*
a.pb-c.c a.pb-c.h

它为这个原型文件生成C绑定。但是当我尝试编译这个的时候。c文件,在查找时间戳时出现以下错误。pb-c.h文件。

home>gcc a.pb-c.c dummy.c -I/usr/local/include -L/usr/local/lib -lprotobuf-c
In file included from a.pb-c.c:9:0:
a.pb-c.h:17:10: fatal error: google/protobuf/timestamp.pb-c.h: No such file or directory
#include "google/protobuf/timestamp.pb-c.h"
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.

在protoc-c中,我看不到标准proto-like时间戳的头文件。当我安装protoc-c时,proto正在生成/暂存。这是否意味着我们必须使用protoc-c显式地重新编译google/protobuf下的所有proto,为所有proto(google/protobuf/*.protos)生成c绑定,在/usr/local/include/google/protobuf下暂存生成的头文件,并在我们的库中包含*pb-c.c文件,以便成功构建它?我是否需要安装任何特定的软件包来获取google/protobuf下protos的C绑定。我是否在安装过程中错过了一些步骤,这会在google/protobuf下为所有Proto自动生成C绑定,并正确地进行安装。

我没有看到任何问题,如果我不导入任何协议从谷歌/协议。

当对同一个proto文件使用proto时,我看不到任何这样的问题。

home>protoc --cpp_out=. a.proto
home>g++ a.pb.cc dummy.cc -I/usr/local/include -L/usr/local/lib -lprotobuf
home>

我是protobuf新手,第一次使用protoc-c编译器。所以为我的缺点道歉。

谢谢,-Mini

共有1个答案

姜鹏程
2023-03-14

通常在第3方协议库中,您会像对待自己编写的任何. proto文件一样对待Google的. proto文件。因此,您将编写规则以将它们编译到项目特定包含目录中的文件夹中。

 类似资料:
  • 我有几个。具有proto2语法的proto文件。我试图使用protoc编译器自动生成C#类,但我得到了一个错误:“C#代码生成只支持proto3语法。 而不是手动更新每个。proto文件要符合proto3语法,是否有其他方法可以自动生成C#类?我对protobuf完全陌生,所以我知道这听起来像是一个奇怪的问题,因为编译器明确指出我必须遵循proto3语法-我只是想知道是否有办法让C类使用proto

  • 我正在使用Ubuntu14.04计算机,试图将google.protobuf模块导入到Python2.7中。 我已经试过了 和 没有成功。 在python内部,我得到一个错误,即: “导入错误:没有名为google.protobuf的模块” 编辑1: 对不起,谢谢大家的评论。我还是Ubuntu和StackOverflow的新手。 具体来说,我输入到命令行 并获得反馈 Traceback(最近的调用

  • 我在https://github.com/grpc/grpc-java/tree/master/examples/example-kotlin/android/helloworld创建了一个gRPC项目,非常类似于kotlin android项目的示例gRPC 如果我使用示例proto文件,构建过程就会正常工作。但现在,我已经用不同的原始文件替换了这些原始文件,Gradle无法构建我的项目。 这是

  • 我目前正试图在一个非bazel项目中使用Tensorflow的共享库,所以我创建了一个。所以使用bazel从tensorflow归档。 但当我启动一个同时使用Opencv和Tensorflow的c程序时,它会让我产生以下错误: [libprotobuf FATAL external/protobuf/src/google/protobuf/stubs/common.cc:78]此程序是根据协议缓冲

  • 问题内容: 我知道寻求这种帮助并不是一件容易的事,但是我已经坚持了一段时间-现在我正在阅读两本C#书,每天工作超过9个小时。 好的,这是我的问题:我有一个几乎完整的WinForms C#应用程序。在SQL中,我有三个看起来像这样的表: 我在本地磁盘上有XML文件,用于导入这三个表-XML看起来像这样: 再一次让我感到尴尬,以这种方式请求帮助,但是我将尽一切可能尝试支持StackOverflow。

  • 在我的项目中已经安装了opencv,但是导入的C++文件出现了错误 null