2

プロトコル バッファを使用しており、protoc を使用して c++ および python ファイルを生成し、protobuf-csharp-port を使用して c# ファイルを生成しています。現時点では、これらは別々に行われています。Linux の c++ と python、Windows の c# です。1 つのスクリプトでこれらすべてを生成し、Linux で実行したいと考えています。

これを行うために、モノで ProtoGen.exe を実行しようとしていますが、出力が生成されません。次のコマンドは実行されますが、cs ファイルもエラーも生成されません。

mono ../cs/Packages/Google.ProtocolBuffers/tools/ProtoGen.exe --protoc_dir=/usr/local/bin/ ./subdir/simple_types.proto

シンプルなものが欠けているような気がします。

4

2 に答える 2

5

Linux で ProtoGen.exe から protoc を実行しようとしたことはないと思います。エラーがないことに驚いていますが、間違いなく調べることができます。(問題を提起したい場合は、それが非常に役立ちます-または、機会があればそれを行います。)

とりあえず、最初に protoc を実行し、 を使用--descriptor_set_outして .proto ファイルのバイナリ (protobuf) バージョンを作成することをお勧めします。それが ProtoGen.exe が最初に実行しようとしているものであり、その音で失敗しています。

メッセージ記述子のバイナリ バージョン (simple_types.pb と呼びます) を取得したら、それに対して ProtoGen.exe を実行できます。これを行ってからしばらく経ちましたが、実行できるはずだと思います

mono ../cs/Packages/Google.ProtocolBuffers/tools/ProtoGen.exe ./subdir/simple_types.pb

...そして、魔法のように機能するはずです。

恐ろしい代替手段として、バイナリディレクトリでシンボリックリンクprotoc.exeを試すことができます。protoc基本的に、それが間違っていると思います:)

于 2013-01-31T07:09:26.190 に答える