Wie übermittele ich Daten von protobuf-embedded-c in die Google protobuf C ++ / Java-Bibliothek?

8

Ich verwende protobuf-embedded-c auf einem kleinen System, um verschiedene Daten aus dem Internet zu übertragen es zu einem PC. Das Problem ist, dass wenn ich die eingebettete Bibliothek an beiden Enden benutze, alles funktioniert. Wenn ich Google C ++ auf dem PC verwende, funktioniert es nicht mehr. Ich denke, dass ich das Problem zu der eingebetteten Bibliothek verfolgt, die Längenpräfixe in jeder Nachricht hat, aber ich kann nicht scheinen, das in einer guten Weise auf der C ++ Bibliothek zu tun. Hier ist die Testanwendung, die ich verwendet habe, um dies zu debuggen:

person.proto:

%Vor%

main.cpp:

%Vor%

Die eigentliche Frage: Welche Methoden sollten in der Google protobuf C ++ / Java-Bibliothek verwendet werden, um erfolgreich mit der eingebetteten Bibliothek zu kommunizieren? Die einfache Antwort wäre wahrscheinlich, allen Nachrichten das Präfix hinzuzufügen (beim Parsen zu lesen), aber das bricht den Code. Sollte ich nur nach einer besseren eingebetteten Bibliothek suchen?

Update: Ich habe diese großartige kleine Bibliothek namens nanobb ausprobiert und es funktioniert jetzt großartig. Fazit: protobuf-embedded-c ist NICHT kompatibel mit der Google-Protobuf-Implementierung!

    
rotator 27.05.2012, 14:55
quelle

2 Antworten

2

Geben Sie offset als -1 statt 0 an. Zum Beispiel:

writtenlenght = PhoneNumber_write_delimited_to(&number, outputbuffer, -1);

oder Sie können einfach PhoneNumber_write(&number, outputbuffer, 0);

verwenden     
jaffa 27.06.2012 10:49
quelle
0

In protobuf-eingebetteten-cs generierte C-Datei existiert

%Vor%

, die anscheinend das erwartete tun, lesen / schreiben einer Nachricht ohne ein Größenpräfix. Ich weiß nicht, warum diese nicht in der erzeugte H-Datei , aber Sie sollten in der Lage sein, es selbst hinzuzufügen.

    
ephemient 03.06.2012 20:00
quelle