5

私は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;

4

1 に答える 1

9

問題の行は次のように述べています。

// trap usage of invalid uninitialized boolean which would
// otherwise crash on load.

ある時点で、bool初期化されていない a をシリアル化しようとしているようです。これ以上のコードがなければ、どれを見つけるのを手伝うことはできません。

于 2011-02-23T15:29:48.223 に答える