我正在进行序列化序列。
在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;
答案 0 :(得分:1)
Boost的内置二进制存档不可移植。它在文档中这样说。
相反,您应该可以使用 EOS Portable Archive 。它与Boost序列化完全兼容。
除此之外,请务必使用与平台无关的类型标识符(因此,int64_t
代替long
等)。