2016-03-09 28 views
-1

我在xml中有一個輸入文件,我已經使用C++解析並填充了我的數據結構。如何從C++程序創建Google Proto消息文件?

我是新的谷歌協議緩衝區,我無法弄清楚如何從我的填充數據結構創建消息(.prot)文件。

感謝

+1

從https://developers.google.com/protocol-buffers/docs/cpptutorial開始 –

+0

THanks,我已經通過了。我看到的所有內容都是編寫自己的消息文件,然後使用消息文件生成代碼。使用該代碼然後進一步處理。在閱讀完教程後,我注意到消息文件必須由我們自己手動創建?我找不到從我的C++代碼自動生成消息文件的方法! – k2ibegin

+0

@ k2ibegin _「我無法從我的C++代碼中找到自動生成消息文件的方法!」_這不是google protobuf的工作方式。你必須首先提供一個'.proto'文件。 –

回答

1

如果你想生成谷歌的協議緩存從結構/類定義.proto文件在C++頭文件,你需要使用某種形式的C++反思。

到目前爲止,C++並沒有內置反射,但是有第三方庫可以解決這個問題。

隨着Boost Fusion BOOST_FUSION_DEFINE_STRUCT你可以用這樣的方式定義你的類,你可以在編譯或運行時迭代成員。此解決方案具有侵入性,因爲它需要您使用該宏定義結構,但不需要任何額外的工具將其集成到構建系統中。

另一種選擇是使用獨立的代碼生成器。一個例子是Classdesc

1

與使用XML創建的東西相比,協議緩衝區更像是XML的替代品。 因此,在這種情況下,您會編寫您的.proto文件,定義您的數據模型,然後將這些文件與關聯的getter,setter和builder編譯到您的.cpp文件中。