我使用boost的二进制序列化,一直运行良好,但现在我有一个指针的std::list需要进行序列化输出(oarchive),但是在对象的serialize()函数中,序列化失败,并显示了MSVC对话框:
R6010 -abort() has been called
并且控制台窗口打印出这样的字符串:
Assertion failed: 0 == static_cast(t) || 1 == static_cast(t), file c:\program files\boost\boost_1_44\boost\archive\basic_binary_oprimitive.hpp, line 91
这是什么意思?
该项目比较庞大,源代码分布式存储,因此我无法在此处发布其代码,但我尝试在简单项目中模拟此错误 - 在那里它可以正常工作,这很奇怪。
P.S. 我使用Windows XP上的MSVC2010EE和boost 1.44。当我在“Debug Error!”窗口上单击“重试”时,调试器会在序列化
R6010 -abort() has been called
并且控制台窗口打印出这样的字符串:
Assertion failed: 0 == static_cast(t) || 1 == static_cast(t), file c:\program files\boost\boost_1_44\boost\archive\basic_binary_oprimitive.hpp, line 91
这是什么意思?
该项目比较庞大,源代码分布式存储,因此我无法在此处发布其代码,但我尝试在简单项目中模拟此错误 - 在那里它可以正常工作,这很奇怪。
P.S. 我使用Windows XP上的MSVC2010EE和boost 1.44。当我在“Debug Error!”窗口上单击“重试”时,调试器会在序列化
archive << myList;
行旁边的代码行上显示箭头 - 我的意思是似乎在某个析构函数或其他地方发生了错误。
当我更改对象的serialize()函数内部时,只有在重新编译整个项目(clean before compiling)后才会应用这些更改 - 但是如果我只是编译它(其中IDE显示包括已更改的头文件的所有源代码都已重新编译) - 自最后一次版本以来,运行时不会发生任何更改(我用printf()试过) - 这很奇怪。
我是否可能偶然地设置了某些关键定义或其他内容?