問題タブ [boost-serialization]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - ラッパーのシリアライゼーション省略バージョンのブースト
特定の構造について、クラスの「バージョン」識別子を読み書きしてはならないことをブーストに伝えるにはどうすればよいですか?
いくつかの型をより小さな方法 (可変長整数など) でシリアル化するためのラッパー クラスを作成しています。ラッパーが書き込まれたクラス バージョンを取得すると、サイズ削減のポイント全体が失われます (ほとんどの場合、最終的に大きくなります)。
たとえば、次のinteger a
コードを置き換えるとします。
これとともに:
特性はわかりis_wrapper
ますが、それが何をするのか、またはそれが役立つかどうかについてのドキュメントは実際には見つかりません。
c++ - シリアル化可能なネストされたクラスを含むクラスのシリアル化奇妙なコンパイルエラー
ブーストシリアル化の基本を学ぼうとしています。だから私はチュートリアルに従い、シンプルなものを作成しclass A
ました。それはプライベートメンバーとして含まれています。class B
class C
A a_;
B b_;
IDEone liveでは、奇妙で恐ろしいコンパイラエラーがすべてここにあります。VS2010を使用しているときに、同じエラーが2つだけ発生しました。
私は何を間違えましたか、どうすればclass C
シリアライズ可能class A
にできclass B
ますか?
c++ - ブーストシリアル化を使用する場合のリンカーエラー
ブーストシリアル化を使用しています。私は次のようにコンパイルしました:-L/opt/local/lib -lboost_serialization -stdlib=libc++
、しかしいくつかの(不可解な)エラーが発生しました:
私はシリアル化していstd::vector<std::string>
ます:
Boostのインストールに問題はありますか?
Boostライブラリは、32ビットと64ビットの両方のマシンコードを含むユニバーサルバイナリです(これは私が推測する問題ではありません)。
sudo port install boost +universal
Mac OSX10.7を使用してboostをインストールしました。
c++ - BoostSerializationライブラリを使用しようとしたときにエラーが発生しました
問題を再現する簡単なプログラムを作成しました。
コードは正常にコンパイルされますが、実行時に次のエラーが発生します。
name
デバッガーでは、boostが変数を逆シリアル化しようとしたときにエラーが発生することがわかります。
誰かが私が間違っていることを理解するのを手伝ってもらえますか?
アップデート
私はMacOSX Lionを使用しており、GCC 4.6.2(g++-mp-4.6 (GCC) 4.6.2
)とブーストバージョン1.48を使用しています。どちらもMacPorts経由でインストールされます。
コマンドラインは次のとおりです。
ここでSubversionからコードをチェックアウトできます:http ://stacked-crooked.googlecode.com/svn/trunk/Playground/Serialization 。
アップデート
Linux GCC 4.6.1とブースト1.48でテストしましたが、正常に動作します。それはどういうわけかMacでの私の設定に固有の問題であるに違いありません。
c++ - std::stack に boost::serialization を使用するには?
次のような対応するブースト ヘッダー ファイルを含める限り、 std::vector 、 list 、 map などに boost::serialization を使用できることはわかっています。
しかし、 std::stack に boost::serialization を使用するにはどうすればよいですか?
ありがとう
c++ - Boost Serializationでオブジェクトを更新するには?
その中にクラスがあったとしましょstd::map<string, string>
う。のようなデータを持つインスタンスがあるとします[Jon : Smith; Sara : O'Connel]
。連載してアーカイブ化しました。ここで、そのようなマップ コンテンツを使用して別のインスタンスを作成しました[Jon : AnotherSmith; Brian : Gor]
。連載してアーカイブ化しました。これで 2 つのアーカイブができました!) tham 2 を 1 つのオブジェクト インスタンスに逆シリアル化するにはどうすればよい[ Sara : O'Connel; Jon : AnotherSmith; Brian : Gor]
でしょうか。
c++ - クラスのシリアル化をDLLに入れる
DLLのクラス構造を外部でシリアル化するための(実用的な)例を探しています。現在、その例を見つけることができません。Boostのドキュメントには、いくつかのマクロが記載されているだけであり、フォーラムやニュースグループは、ソリューションに関する特定の問題について話し合っているだけです。
そこで、次のようなクラス構造を(外部で)シリアル化する例を求めています。クラスコードに加えて、シリアル化用のコードを追加しました(これは機能しません。エラーメッセージについては下部を参照してください)。
私がこれまでに持っているのは、次のようなコードだけです。
serializeFoo.h
serializeFoo.cpp
serializeBar.h:
serializeBar.cpp:
シリアル化コードはDLLに入り、FooクラスとBarクラスを使用する別のプロジェクトで使用する必要があります。すべてが正常にコンパイルされますが、実行時にメッセージが表示されます
unregistered class - derived class not registered or exported
それで、私は間違ったマクロを使用しましたか?マクロが恋しいですか?上記のコードは正しいですか、それとも何らかの構造上のエラーがありますか?おそらくこれは他の多くの人にも役立つかもしれませんが、クラスのシリアル化をDLLに入れることは非常にエキゾチックではないと思います...
c++ - ビットフィールドのシリアル化と逆シリアル化
シリアル通信チャネルを介して送受信される一連のメッセージを定義するドキュメントが渡されました。受信メッセージを取得してオブジェクトに逆シリアル化し、送信メッセージもシリアル化したいのですが。有線でのエンコードは確立されており、変更できません。ヘッダー内のさまざまなビットフィールドとさまざまなペイロードで構成されます。
protobufsの使用を調べましたが、それらのvarintエンコード方法が確立されているようです。ブーストシリアル化についても見てきましたが、これまで読んだ内容に基づくと、そこでエンコードがどのように行われるかは完全には明確ではありません。
だから、いくつかの質問:
- ブーストシリアル化を使用してバイトストリームをオブジェクトに変換できますか?
- シリアル化のために自分のルーチンをロールする必要がないことを目標に(メンテナンスの混乱)、私のタスクを実行するための好ましいメカニズムがあります(たとえば、カスタムブーストシリアル化アーカイブ、私が発見していない別の方法)
c++ - C++ 用の Python の StringIO/CStringIO のようなものはありますか?
Boost のシリアライゼーション ライブラリを使用して、ネットワーク経由で送信する大量のデータをシリアライズしています。
Boost のシリアライゼーション ライブラリには、シリアライゼーションとデシリアライゼーション用の中間ファイルが必要です。送信されるデータの量により、これらすべてを行うのは困難です。物事を記憶に留めておく方がはるかに良いでしょう。
Boost のシリアル化を偽造するために使用できる Python の cStringIO/StringIO に似たものは C++ にまったくありますか?
前もって感謝します。
c++ - シリアル化と名前空間を後押し
Boostシリアル化を使用するのは初めてです。私はxmlシリアル化と非侵入型バージョンを使用しています。(Boost Webサイトからの)チュートリアルを段階的に実行しましたが、コードは正常に機能します。
この問題は、クラス(コードが.hと.cppに加えてmain.cppファイルに分割されている)を名前空間(ns_mytests)に配置すると発生します。この場合、コンパイラ(g ++)が文句を言い、次のエラーが発生します。
私が何か間違ったことをしていることは確かですが、私のエラーを見つけることができませんでした。
どんな助けでも大歓迎です。
ありがとう、ウェストフォーク