いくつかのポリモーフィック クラスを分割して、シリアル化して dll ファイルにしようとしました。次に、未登録のポリモーフィック型の例外が発生します。問題は、コードがポリモーフィック オブジェクトのルックアップに使用されるマップの 2 つのインスタンスを作成することです (テンプレート クラス cereal::detail::StaticObject によって保持されます)。シリアル化を行うプロジェクトに CEREAL_REGISTER_TYPE を入れると、すべてうまくいきます。
だから、dllファイルに登録できるようにするためのトリックを行うことができるかどうか、誰かが知っているのだろうか?
プログラムに cereal::detail::StaticObject クラスの同じインスタンスを使用させることはできますか?
質問する
167 次
2 に答える
0
シリアル v1.1.0の時点で、この問題はポリモーフィック型の登録をヘッダー ファイルに移動することで解決できます。これにより、そのヘッダーを含むすべての翻訳単位がその StaticObject を適切に初期化することが保証されます。登録マクロを呼び出す前に、バインドするアーカイブを含めることを忘れないでください。
[メインのシリアル ドキュメント] サイト ( http://uscilab.github.io/cereal/polymorphism.html ) で詳細情報を入手できます。これも 1.1 用に更新されています。
于 2015-01-19T21:38:46.463 に答える