在何处设置协议的路径以导入标准协议缓冲区

时间:2019-02-17 19:38:42

标签: dart protocol-buffers grpc protoc

我在哪里需要将path设置为protoc以获得导入标准协议缓冲区(protobuf),例如Windows和Dart中的empty.prototimestamp.proto? >

运行protoc时:

  

协议--dart_out = grpc:lib / src / protos /生成的-Iprotos   protos / organization.proto   --plugin = protoc-gen-dart = D:\ Users \ Samuel \ AppData \ Roaming \ Pub \ Cache \ bin \ protoc-gen-dart.bat

出现以下错误

  

google / protobuf / empty.proto:找不到文件。 organization.proto:   找不到导入“ google / protobuf / empty.proto”或出现错误。   Organization.proto:14:27:未定义“ google.protobuf.Empty”。

Settings插件上的IntelliJ Protobuf Support中,path定义了标准原型(* .proto)的位置:

enter image description here

此外,此path是在Project Structure \ Global Libraries上的IntelliJ中定义的:

enter image description here

导入organization.proto以使用google/protobuf/empty.proto类的代码Empty

syntax = "proto3";

package auge.protobuf;

import "google/protobuf/empty.proto";

service OrganizationService {

    rpc GetOrganizations (google.protobuf.Empty) returns (OrganizationsResponse) {}
}

IntelliJ分析器可以识别IDEA上的import "google/protobuf/empty.proto"Empty类,但找不到protoc

环境是:

  • SO:Windows 7 x64
  • 协议:libprotoc 3.6.1
  • 飞镖:2.2.0边缘

1 个答案:

答案 0 :(得分:0)

假设您有 /some/path/to/google/protobuf/empty.proto,您需要传递 --proto_path=/some/path/to/ 以便 protoc 可以找到它。