簡體   English   中英

是否有將 C++ 代碼轉換為 protobuf 的函數?

[英]Is there a function to convert C++ code into protobuf?

我正在使用 MagicDraw 的序列圖對 GPB 消息和應用程序間通信進行建模。

最終,我想使用 MagicDraw 的 C++ 代碼生成工具將模型導出為 C++ 代碼,然后將其轉換為 .proto 文件。 目標是從 MagicDraw 轉換圖表模型並將它們轉換為 .proto 文件。

我花了 5 個多小時尋找方法來做到這一點,但看起來代碼轉換只能通過編寫 .proto 文件然后使用 protoc 將它們轉換為 C++,而不是相反。

有沒有辦法扭轉這個過程?

啊,對神聖模型<==>模式<==>代碼<==>模型三角形的追求。

恐怕我實際上沒有一個好的答案。 我最接近這個的是 Enterprise Architect、XSD 和 ASN.1。 但這並不完整; Enterprise Architect 不同步到 XSD; 這是一個直接的導入/導出,因此在 XSD 中所做的更改不會反映回 Enterprise Architect。 在 EA 中,您可以定義類(經典的 UML 東西),並將類包導出為 XSD,更好的 ASN.1 工具會將其作為模式使用(XSD 和 ASN.1 模式之間有官方翻譯,以及 ASN .1 編譯器往往更擅長在生成的代碼中實現和強制執行諸如minoccurs事件之類的事情(許多 XML/XSD 編譯器實際上在這些事情上做得很糟糕)。

我有點放棄尋找了。 我的懷疑是,工具開發人員只有在有市場(或願意為 OSS 捐款的熱心用戶群)的情況下才會這樣做。 大量軟件的開發沒有使用模式來定義數據結構(這會導致世界上大量的緩沖區溢出、接口錯誤等),更不用說同步代碼/模式/模型的工具了。 所以我認為很少有開發人員看到這種工具的實際價值,所以一開始就沒有那么大的熱情來開發這些工具。 這是典型的雞/蛋情況。

這是一個遺憾。 使用像 ASN.1 或 XSD(帶有非常好的編譯器)這樣的強大模式系統,或者可能在緊要關頭使用 JSON(似乎更強調使用模式來檢查對象,而不是使用模式來定義類)導致到一個非常敏捷的開發路徑。 特別是使用 ASN.1,您可以在模式中定義一次系統的所有消息/數據結構及其約束和所有系統常量。 然后,您可以使用構建系統將任何更改自動傳播到項目的每個角落。 通過采用這種模式,您可以非常輕松且安全地對系統界面進行最新的更改。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM