srb*_*emr 21 go protocol-buffers protoc
我有包含以下内容的简单原型文件。
\nsyntax="proto3";\n\npackage main;\n\nmessage Person {\n string name = 1;\n int32 age = 2; \n}\n
Run Code Online (Sandbox Code Playgroud)\n我正在尝试使用 protoc 为其生成 go 代码。我跑:
\nprotoc --go_out=. simple.proto\n
Run Code Online (Sandbox Code Playgroud)\n我收到以下错误:
\nprotoc-gen-go: unable to determine Go import path for "simple.proto"\n\nPlease specify either:\n \xe2\x80\xa2 a "go_package" option in the .proto source file, or\n \xe2\x80\xa2 a "M" argument on the command line.\n
Run Code Online (Sandbox Code Playgroud)\nmain.go
,go.mod
并且simple.proto
位于同一文件夹中。和protoc
都protoc-gen-go
在 PATH 环境中定义。
Osc*_*vid 24
Protoc要求指定包,那么解决办法是添加
option go_package = "./your-package-name";
Run Code Online (Sandbox Code Playgroud)
使您的文件如下所示:
syntax="proto3";
package main;
option go_package = "./your-package-name";
message Person {
string name = 1;
int32 age = 2;
}
Run Code Online (Sandbox Code Playgroud)
然后你可以运行命令,例如:
protoc -I src/ --go_out=src/ src/simple/simple.proto
Run Code Online (Sandbox Code Playgroud)
where--go_out=src/
指定文件的生成位置,然后指定原始文件的相对路径。
注意:不要忘记在option go_package
前面加上前缀./
Pan*_*udi 17
您忘记通过添加以下内容来链接该文件:
option go_package = "./";
Run Code Online (Sandbox Code Playgroud)
您需要先将其链接列表才能使其工作。这里也是同样的问题
归档时间: |
|
查看次数: |
30168 次 |
最近记录: |