对于text_oarchive对象,boost :: serialization stack已损坏

时间:2016-10-16 20:42:09

标签: c++ serialization boost

我想使用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");

在第一个中,我得到了损坏的堆栈,在它运行的测试项目中。

1 个答案:

答案 0 :(得分:1)

问题是包含的头文件和使用的库中的不同版本的boost(1.61,1.59)。我的错误。

更正VS项目的属性,代码按预期工作。 谢谢你的暗示。