建议proto文件按包名分子目录
(金庆的专栏 2017.4)
服务器客户端之间的protobuf协议定义在客户端与服务器公共目录下,包名为rpc.
服务器内部协议定义在服务器目录下,包名为svr.
rpc.EmptyMsg 和 svr.EmptyMsg 分别定义在各自的根目录,文件名都是 empty_msg.proto.
运行时就会报错:
[libprotobuf ERROR E:\deps\protobuf-3.2.0\protobuf-3.2.0\src\google\protobuf\
descriptor_database.cc:57] File already exists in database : empty_msg.proto
[libprotobuf FATAL E:\deps\protobuf-3.2.0\protobuf-3.2.0\src\google\protobuf\
descriptor.cc:1275] CHECK failed: generated_database_->Add(encoded_file_descriptor, size):
原因为试图用同一个文件名"empty_msg.proto"往descriptor_database添加descriptor。
如果按包名分子目录,文件名就可以分开为 "rpc/empty_msg.proto" 和 "svr/empty_msg.proto".