Cereal 在Linux上从Windows反序列化二进制文件失败
我已经为一个谷物系列化问题挣扎了好几个小时 如果my struct在Windows上序列化,在Android上反序列化,则会失败:Cereal 在Linux上从Windows反序列化二进制文件失败,cereal,Cereal,我已经为一个谷物系列化问题挣扎了好几个小时 如果my struct在Windows上序列化,在Android上反序列化,则会失败: cereal::Exception: Failed to read 1 bytes from input stream! Read 0" failed 如果二进制文件在Android上序列化,在Windows上反序列化,则该文件可以工作。 也适用于Windows/Windows和Android/Android。 在所有情况下,二进制文件正好是一个字节 我
cereal::Exception: Failed to read 1 bytes from input stream! Read 0" failed
如果二进制文件在Android上序列化,在Windows上反序列化,则该文件可以工作。
也适用于Windows/Windows和Android/Android。
在所有情况下,二进制文件正好是一个字节
我在Windows和Android Linux上运行的代码完全相同,在序列化结构中只有一个bool。(两个版本的谷物版本相同)
这就是我要序列化的内容:
ofstream os_out("data.bin", std::ios_base::binary | ios::binary);
{
cereal::BinaryOutputArchive archive_out(os_out);
archive_out(a);
}
os_out << std::flush;
os_out.close();
std::ifstream os_in("data.bin", std::ios_base::binary);
{
cereal::BinaryInputArchive archive_in(os_in);
archive_in(a);
}
os_in.close();
无法找出问题所在…只是尝试使用PortableBinaryOutputArchive,但一切都不起作用。唯一的区别是二进制文件的大小是2字节,而不是1字节。你可能有一些东西在windows和android之间编码为不同的大小?e、 g.bool,可以是1或4个字节,具体取决于编译器。如果看不到正在序列化的类型,很难说。为什么在读取时没有“ios::binary”?“使用ios::binary打开文件可控制新行字符的处理方式。在Windows上,新行字符被扩展为CRLF对。”请参阅刚才尝试使用PortableBinaryOutputArchive,但这一切都不起作用。唯一的区别是二进制文件的大小是2字节,而不是1字节。你可能有一些东西在windows和android之间编码为不同的大小?e、 g.bool,可以是1或4个字节,具体取决于编译器。如果看不到正在序列化的类型,很难说。为什么在读取时没有“ios::binary”?“使用ios::binary打开文件可控制新行字符的处理方式。在Windows上,它们将扩展为CRLF对。”请参阅