私はboostのバイナリシリアライゼーションを使用していますが、今までうまくいきました。出力 (oarchive) 用にシリアル化するためのポインターがstd::list
ありますが、MSVC のダイアログでオブジェクトの serialize() 関数内でシリアル化が失敗します。
R6010 -abort() has been called
そのような文字列がコンソール ウィンドウに出力されます。
Assertion failed: 0 == static_cast<int>(t) || 1 == static_cast<int>(t), file c:\program files\boost\boost_1_44\boost\archive\basic_binary_oprimitive.hpp, line 91
どういう意味ですか?
プロジェクトはかなり大きく、ソースが配布されているため、ここにコードを投稿することはできませんが、単純なプロジェクト内でこのエラーをシミュレートしようとしました-そこでは奇妙なことがうまくいきます。
PS Windows XP の MSVC2010EE でブースト 1.44を使用しています。「 Debug Error! 」ウィンドウで「 retry」をクリックすると、デバッガーはシリアライゼーション行の横のコード行に矢印を表示します- つまり、デストラクタなどでエラーが発生したようです。オブジェクト serialize() 関数内で変更を行うと、プロジェクト全体を再構築するときにのみ適用されます (コンパイル前にクリーンアップします) - ただし、コンパイルするだけの場合 (IDE は、変更されたヘッダーを含むすべてのソースが再コンパイルされることを示します) - 変更はありません最後のバージョンから実行時に発生します(printf()で試しました)-それは奇妙です。ときどき重要な定義などを設定できますか?archive << myList;