gpt4 book ai didi

c++ - boost binary_oarchive 对不同的编译器工作方式不同

转载 作者:行者123 更新时间:2023-11-30 03:40:50 25 4
gpt4 key购买 nike

我需要在客户端和服务器之间传输数据。当我将服务器从 Windows (msvc140) 移至 Debian(gcc 64 位)时,基于 boost 的字节流类出现问题。他们的文件是不同的。

#include <string>    
#include <boost/archive/binary_oarchive.hpp>
#include <boost/iostreams/device/back_inserter.hpp>
#include <boost/iostreams/stream.hpp>

int main()
{
std::string s;
typedef boost::iostreams::back_insert_device<std::string> BackInsertDevice;
typedef boost::iostreams::stream<BackInsertDevice> Stream;
typedef boost::archive::binary_oarchive BinaryOArchive;

Stream stream(s);
BinaryOArchive ar(stream);

ar << "qwer" << 10;
stream.flush();

int sz = s.size();
// Windows (msvc140): 49
// Debian (gcc 64-bit): 57
}

boost 的两个版本都是 1.61.0

最佳答案

这是记录在案的。 http://www.boost.org/doc/libs/1_49_0/libs/serialization/doc/todo.html#portablebinaryarchives

Boost 本身没有可移植存档。

您想查看 EOS Portable Archives:https://epa.codeplex.com/

它们很容易放入您的代码库并代替 boost::archive::binary_[io]archive

关于c++ - boost binary_oarchive 对不同的编译器工作方式不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37784395/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com