我想使用boost :: serialization设置一些对象的快速序列化以进行debuging目的。
我已经在一个简单的独立Win32控制台应用程序(32位和64位)中成功测试了以下功能,并且它按预期工作。
在我的主Visual Studio解决方案(64位)中使用该功能,我得到“运行时检查失败#2 - 变量'oa'周围的堆栈已损坏。”
离开功能时。创建的文件看起来正常或正常,但应用程序崩溃。
首先我认为这是因为我没有关闭ofstream
,但这没有帮助。
我正在尝试归档QuantLib
中实现的简单矩阵结构,我留下详细信息导致错误消息是关于text_oarchive对象。
void saveMatrix(const Matrix &m, const char* fileName){
ofstream file(fileName);
text_oarchive oa(file);
oa << m.rows() << m.columns();
for (Matrix::const_iterator it = m.begin(); it != m.end(); it++)
oa << *it;
file.close();
}
我在应用程序/解决方案和测试项目中尝试了相同的测试调用代码
Matrix m(2, 3, 0);
m[0][0] = 2.3; m[0][1] = 1.2; m[0][2] = 22;
m[1][0] = 7.3; m[1][1] = 8.2; m[1][2] = 8.22;
saveMatrix(m, "testArchive.txt");
在第一个中,我得到了损坏的堆栈,在它运行的测试项目中。
答案 0 :(得分:1)
问题是包含的头文件和使用的库中的不同版本的boost(1.61,1.59)。我的错误。
更正VS项目的属性,代码按预期工作。 谢谢你的暗示。