Boost二进制文件读取错误不支持的版本

时间:2017-05-13 09:19:09

标签: c++ linux serialization boost binaryfiles

我正在进行序列化序列。

在windows系统中,我通过boost :: serialization

创建了二进制文件

似乎没有问题。

但是,如果我将这个二进制文件移动到linux系统并加载二进制文件 编译器说不支持的版本。

我不知道这个问题。

任何人都可以帮助我们吗?

Windows和Linux Boost版本是一样的。提升版本是1_63_0。

Adjcency_grpah LoadGraphData(char *fileName) {
    Adjcency_grpah g;
    std::ifstream ifs(fileName, std::ios::binary);
    if (!ifs) {
        cout << "Read Error" << endl;
        exit(1);
    }
    try {
        boost::archive::binary_iarchive ia(ifs);
        ia & BOOST_SERIALIZATION_NVP(g);
        cout << "Restoring Graphs Serialize Success\n" << endl;
    }
    catch (boost::archive::archive_exception e) {
        cout << "BOOST ERROR " << e.what() << std::endl;
    }
    return g;
}

它仍然说 &#34; BOOST ERROR不支持的版本 时间:0&#34;

1 个答案:

答案 0 :(得分:1)

Boost的内置二进制存档不可移植。它在文档中这样说。

相反,您应该可以使用 EOS Portable Archive 。它与Boost序列化完全兼容。

除此之外,请务必使用与平台无关的类型标识符(因此,int64_t代替long等)。