none
请教一下 关于 Boost 序列化库的 32位和64位平台的问题。 RRS feed

  • 问题

  • 我在程序中使用 Boost 的序列化库来序列化std::wstring 到 binary_archive 的时候。

    在 Win32 下序列化的数据不能被 x64 平台上的程序反序列化。

    同样在 x64 平台上的程序序列化的数据也不能被 Win32 平台上的程序反序列化。

    但是,她们各自序列化的数据,都能够被自己反序列化。

     

    我测试后,发现可能由于std::wstring 在序列化之前写入的字符串的长度值得原因。而这个值在不同的平台上的大小是不一样的。

    _W64 unsigned int 和 unsigned __int64。

     

    请教大家,如何才能够在让std::wstring 在不同的平台上序列化一致。

     

    另外,我的程序要求序列化后的数据尽量小,所以选择了 binary_archive.

    2011年9月27日 4:10

答案

  • refer to

    http://boost.2283326.n4.nabble.com/serialization-1-36-0-Binary-Archive-portability-between-32-and-64-bits-platforms-td2579964.html


    麻烦把正确答案设为解答。
    2011年9月28日 6:04
    版主
  • 在 libs\serialization\里面找到例程了。

    真不知道,Boost为什么不把这个放到库里面。


    portable_binary_archive.hpp 处理了 intmax_t 和 little_endian 的问题。
    2011年9月29日 11:22

全部回复

  • refer to

    http://boost.2283326.n4.nabble.com/serialization-1-36-0-Binary-Archive-portability-between-32-and-64-bits-platforms-td2579964.html


    麻烦把正确答案设为解答。
    2011年9月28日 6:04
    版主
  • 在 libs\serialization\里面找到例程了。

    真不知道,Boost为什么不把这个放到库里面。


    portable_binary_archive.hpp 处理了 intmax_t 和 little_endian 的问题。
    2011年9月29日 11:22