Ram*_*Ram 6 c# c++ java protocol-buffers
我正在开发一个使用Java,C#和C++应用程序的项目.为了在他们之间进行通信,我正在尝试使用Google协议缓冲区.我正在使用以下.proto文件,它取自示例:
package tutorial;
message Person {
required string name = 1;
required int32 id = 2;
optional string email = 3;
enum PhoneType {
MOBILE = 0;
HOME = 1;
WORK = 2;
}
message PhoneNumber {
required string number = 1;
optional PhoneType type = 2 [default = HOME];
}
repeated PhoneNumber phone = 4;
}
message AddressBook {
repeated Person person = 1;
}
Run Code Online (Sandbox Code Playgroud)
我指的是以下教程:https: //developers.google.com/protocol-buffers/docs/csharptutorial
其他语言的教程也在那里.
我尝试了每种语言的命令行参数:
Java:
C:\ ProtoBuf\protoc -I = C:\ trash --java_out = C:\ trash C:\ trash/addressbook.proto
C++:
C:\ ProtoBuf\protoc -I = C:\ trash --cpp_out = C:\ trash C:\ trash/addressbook.proto
C#:
C:\ ProtoBuf\protoc -I = C:\ trash --csharp_out = C:\ trash C:\ trash/addressbook.proto
即使在Java的情况下有一些警告,Java和C++编译也能正常工作.但是我用C#得到了以下输出:
--csharp_out:protoc-gen-csharp:系统找不到指定的文件.
我正在使用这个编译器:https://github.com/google/protobuf/releases/download/v2.6.1/protoc-2.6.1-win32.zip
我在这做错了什么?我需要任何其他文件进行C#编译吗?
您正在尝试使用旧版本的protoc生成C#文件
protoc-2.6.1-win32.zip
proto2和proto3的C#代码生成器仅在3.0.0-alpha-3版本中引入
向proto3引入了两种新的语言实现(Objective-C,C#).
所以,下载protoc 版本3.0.0-alpha-3,安装它并调用:
protoc -I=$SRC_DIR --csharp_out=$DST_DIR $SRC_DIR/your.proto
请注意,从版本3.0.0-beta-1开始,C#代码生成器仅支持生成proto3:
支持Proto3语义; C#codegen禁止使用proto2文件
小智 4
我知道如何在 C# 中生成原型文件
我将 python 脚本写入 gen proto 文件 gen.py
import os, subprocess, threading
def main():
with open("conf.txt") as file:
exe = os.path.join(os.getcwd(), "..\\Package\\Google.ProtocolBuffers.2.4.1.555\\tools\\ProtoGen.exe")
out = "-output_directory=%s" % (os.path.join(os.getcwd(), "..\\Common\\libs\\protos"))
def gen(proto):
subprocess.check_call([exe, os.path.join("protos", proto), out])
list = []
for proto in file.read().split(','):
t = threading.Thread(target = gen, args = (proto, ))
t.start()
list.append(t)
for t in list:
t.join()
if __name__ == '__main__':
main()
Run Code Online (Sandbox Code Playgroud)
配置文件.txt
base.proto,test.proto,addressbook.proto
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4066 次 |
| 最近记录: |