我遇到了靜態初始化期間實例化的protobuf消息的問題。一些像DebugPrint()這樣的函數會導致崩潰,並且序列化會失敗,並出現大小不匹配的錯誤。全局protobuf消息
考慮到https://developers.google.com/protocol-buffers/docs/reference/cpp/google.protobuf.common#ShutdownProtobufLibrary.details並查看生成的mymessage.pb.cc文件,我認爲問題是該消息的靜態初始化程序尚未被調用。
有沒有人知道我是否可以用某種「合法」的方式強制執行消息的靜態初始化函數(或者我稱之爲)?從查看生成的代碼我可以調用一些神奇的出現函數,但這似乎可能會中斷。或者,這只是我必須忍受的事情,並初始化消息懶惰?
我實際上在默認的:: instance()非常有希望。然而它似乎沒有什麼區別:-(鏈接順序是我真正想要避免的破解 – BillP 2014-11-24 06:42:25
那麼,你需要使用延遲初始化,無論如何這可能是個好主意。可能導致大型應用程序啓動時間過慢 - 例如,Chrome在使用protobufs時遇到了很多問題,這就是爲什麼我在Cap'n Proto中避免使用動態初始化程序的原因。另請參閱[我的關於單身人士](http://www.object-oriented-security.org/lets-argue/singletons),這可能與你的設計有關。祝你好運! – 2014-11-26 05:51:08