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

Protobufs从另一个目录导入

谢烨烨
2023-03-14

当尝试编译名为UserO的原始文件时ptions.proto它有一个名为A的导入ccount.proto使用下面的命令

protoc --proto_path=/home/project_new1/account --java_out=/home/project_new1/source   /home/project_new1/settings/Useroptions.proto

我得到以下错误:

/home/project_new1/settings/UserOpti‌​ons.proto: File does not reside within any path specified using --proto_path (or -I). You must specify a --proto_path which encompasses this file.

PS:用户选项。proto位于目录/home/project\u new1/settings中导入帐户。proto存在于目录/home/project\u new1/account中

原型描述符文件:

用户选项。原型

package settings;

import "Account.proto";

option java_outer_classname = "UserOptionsVOProto";

账户原型

package account;

option java_outer_classname = "AccountVOProto";

message Object
{
    optional string userId = 1;
    optional string service = 2;   
}

共有3个答案

虞祯
2023-03-14

对于我的环境,Windows 10 Pro操作系统和C编程语言,我使用了protoc-3.12.2-win64。拉链,你可以从这里放下它。您应该在protoc-3.12.2-win64路径中打开Windows PowerShell,然后必须执行以下命令之一:

.\protoc.exe -I=C:\Users\UserName\Desktop\SRC --cpp_out=C:\Users\UserName\Desktop\DST C:\Users\UserName\Desktop\SRC\addressbook.proto

或者

.\protoc.exe --proto_path=C:\Users\UserName\Desktop\SRC --cpp_out=C:\Users\UserName\Desktop\DST C:\Users\UserName\Desktop\SRC\addressbook.proto

注:

1-我的源文件夹在:C:\用户\用户名\桌面\SRC

2-我的目标文件夹在:C:\用户\用户名\桌面\DST

3-车型年款。原型文件位于:C:\Users\UserName\Desktop\SRC\addressbook中。原型

高和通
2023-03-14

对于我们这些想把这一点说清楚的人来说,这里有一个例子,我使用NuGet软件包Google为gRPC安装了protoc beta。Grpc协议。Core和Grpc。工具。我的解决方案包比我的Grpc目录高一级(即位于BruTrader\packages)。我的proto文件位于BruTrader\Grpc\proto。

1. My .proto file:
syntax = "proto3";
import "timestamp.proto";
import "enums.proto";
package BruTrader.Grpc;

message DividendMessage {
    double amount = 1;
    google.protobuf.Timestamp dateUnix = 2;
}

2. my GenerateProto.bat file:
..\packages\Google.Protobuf.3.0.0-beta2\tools\protoc.exe -I..\Grpc\protos -I..\packages\Google.Protobuf.3.0.0-beta2\tools\google\protobuf --csharp_out=..\Grpc\Generated --grpc_out=..\Grpc\Generated --plugin=protoc-gen-grpc=..\packages\Grpc.Tools.0.13.0\tools\grpc_csharp_plugin.exe %1

3. my BuildProtos.bat
call GenerateProto ..\Grpc\protos\masterinstrument.proto
call GenerateProto .\protos\instrument.proto
etc.

4. BuildProtos.bat is executed as a Pre-build event on my Grpc project like this:
CD $(ProjectDir)
CALL "$(ProjectDir)BuildProtos.bat"
劳宇
2023-03-14

正如错误消息所述,您在命令行上传递的文件需要位于一个proto\u路径中。在您的情况下,您只指定了一个proto\u路径:

/home/project_new1/

但您传递的文件是:

/home/project_new1/settings/UserOpti‌ons.proto

请注意,该文件不在帐户子目录中;它在设置中。

您有两种选择:

>

protoc --proto_path=/home/project_new1/ --java_out=/home/project_new1 /home/project_new1/settings/UserOpti‌ons.proto

在这种情况下,要导入ccount.proto,您需要编写:

import "acco‌​unt/Account.proto";
 类似资料:
  • 问题内容: 我有这种文件结构(目录和箭头文件之后): 主要: 型号目录: 报告目录: 现在,我想导入,但是我尝试做的错误是没有这样的模块。 我尝试了这个: 然后: 看起来这两个文件夹没有看到对方。从其他目录导入文件的方式是什么?我需要在 init .py文件中指定一些其他导入吗? 问题答案: 您可以在运行时添加到系统路径: 到目前为止,这是最简单的方法。

  • 这是我的Android项目 我想将自定义包从目录应用程序导入目录示例。伙计们,怎么做???

  • 我正在使用QT,我无法找到如何将文件从一个目录复制到另一个目录?我怎样才能做到这一点?

  • 问题内容: 我需要从另一个目录打开一个图像,但是当我尝试像这样输入整个路径名时,以下代码不起作用。 我正在尝试打开图像。我正在这样做,所以我可以为该代码制作GUI,但是我真的很困。我尝试了很多事情,但似乎没有任何效果。任何建议将不胜感激。 问题答案: 你可以尝试任何一个

  • 我试图从另一个目录导入一个python类,但它总是显示“未找到模块”。 我试图将一个类从导入到中,使用以下内容: 但是它显示了'modulenotfounderror:没有名为'supervision'的模块,在python 3.9中实现这一点的最佳方法是什么?