gpt4 book ai didi

c++ - 在 mac 上编译 Protocol Buffer 时出错

转载 作者:行者123 更新时间:2023-11-30 03:47:29 24 4
gpt4 key购买 nike

我正在按照 Protocol Buffer 的教程进行操作,并且在编译时不断遇到不同的错误。我的 addressbook.proto 文件在 /Users/flexmaster411/protobuffer

protoc -I=/Users/flexmaster411/protobuffer --python_out=/Users/flexmaster411/protobuffer/addressbook.proto/Users/flexmaster411/protobuffer

即使我的 proto 文件中有 syntax = "proto3",我仍然收到以下错误

[libprotobuf WARNING google/protobuf/compiler/parser.cc:471] 没有为原型(prototype)文件指定语法。请使用 'syntax = "proto2";'或 'syntax = "proto3";'指定语法版本。 (默认为 proto2 语法。)

不确定我是否正确设置了导致此问题的目标文件夹。感谢任何帮助

syntax = "proto3";

package tutorial;

message Person {
string name = 1;
int32 id = 2; // Unique ID number for this person.
string email = 3;

enum PhoneType {
MOBILE = 0;
HOME = 1;
WORK = 2;
}

message PhoneNumber {
string number = 1;
PhoneType type = 2;
}

repeated PhoneNumber phones = 4;
}

// Our address book file is just one of these.
message AddressBook {
repeated Person people = 1;
}

最佳答案

看起来你颠倒了参数的顺序。 /Users/flexmaster411/protobuffer 是您的输出目录,因此它应该与 --python_out 一起出现。由于您第二次指定它,protoc 认为您是在告诉它 /Users/flexmaster411/protobuffer 是一个输入。所以它试图打开一个目录,然后将其解析为一个.proto 文件。有趣的是,目录上的 read() 不返回任何数据,protoc 将其解释为一个完全有效的 .proto 文件,只是没有声明任何内容!但是它随后会给你一个警告,因为这个空文件没有任何 syntax 行。

我想你想输入的是:

protoc -I=/Users/flexmaster411/protobuffer --python_out=/Users/flexmaster411/protobuffer /Users/flexmaster411/protobuffer/addressbook.proto  

关于c++ - 在 mac 上编译 Protocol Buffer 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33665699/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com