Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/149.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ boost binary_oarchive对不同的编译器的工作方式不同_C++_C++11_Boost - Fatal编程技术网

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

C++ boost binary_oarchive对不同的编译器的工作方式不同,c++,c++11,boost,C++,C++11,Boost,我需要在客户端和服务器之间传输数据。当我将服务器从Windows(msvc140)移动到Debian(gcc 64位)时,基于boost的字节流类出现了问题。他们的档案不同 #include <string> #include <boost/archive/binary_oarchive.hpp> #include <boost/iostreams/device/back_inserter.hpp> #include <boost/iostrea

我需要在客户端和服务器之间传输数据。当我将服务器从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 
}
#包括
#包括
#包括
#包括
int main()
{
std::字符串s;
typedef boost::iostreams::back\u insert\u device BackInsertDevice;
typedef boost::iostreams::stream;
typedef boost::archive::binary_oarchive binaryorchive;
溪流;;
二棱韭菜ar(溪流);
ar这是有记录的

Boost本身没有可移植的归档

您想查看EOS便携式存档:


它们很容易放入您的代码库并使用,而不是
boost::archive::binary\uIO]存档

是您的Windows 32位吗?@Leon。是的。它是。示例包含
#include
,但我在boost/archive中没有此文件。这是因为它不是boost的一部分。这在我的回答中是真实的。我还链接到项目,供您在我的回答中下载#include-没有这样的文件。如果替换为boost/serialization/shared\ptr\u助手.hpp-错误:“boost::serialization::shared_ptr_helper”:使用类模板需要模板参数列表。您在做什么?只需将这些文件安装在源代码树旁边(比如
epa/
),并将其添加到包含搜索路径。这就是您添加它的原因。它不是boost替换。它只是一种附加的归档类型。