Xin lỗi vì đã đăng chéo. Sau khi đăng lên danh sách gửi thư người dùng tăng tốc và một tuần mà không có bất kỳ phản hồi nào, tôi có khuynh hướng đăng vấn đề này lên stackoverflow. Original Post, hơi tái chỉnh sửa:Khả năng tương thích ngược của vectơ (de) tuần tự hóa với Boost.serialization
Hi danh sách,
Tôi di chuyển từ Boost v1.35 lên phiên bản mới. Tuy nhiên, tôi có một số chuỗi đã được tuần tự hóa mà tôi muốn có thể đọc được bằng phiên bản mới.
Sau một số thử nghiệm, tôi thấy rằng phiên bản mới hơn (trong trường hợp này là trường hợp 1.40 nhưng sau này) không thể deserialize std :: trường hợp vectơ từ 1.35 chuỗi được tạo. Bất cứ ai có thể cung cấp cho tôi một con trỏ như những gì có thể là vấn đề ở đây?
Cảm ơn rất nhiều!
Ewald
chi tiết == ==
tôi sử dụng tài liệu lưu trữ văn bản, và phiên bản gcc 4.4.1 (Ubuntu 4.4.1-4ubuntu9)
Các vector thử nghiệm là một cấu trúc với 2 mặt hàng , các số nguyên dài 1 và 2.
Lưu Trữ chuỗi cho các phiên bản tương ứng lib:
1,35: archive: 22 serialization::archive 4 2 1 2
1.40: archive: 22 serialization::archive 5 2 0 1 2
Bây giờ là:
// includes
#include <boost/serialization/vector.hpp>
#include <boost/archive/text_iarchive.hpp>
#include <boost/archive/text_oarchive.hpp>
std::vector<long> testvector;
std::string val = "22 serialization::archive 4 2 1 2"; // v1.35 archive
{
std::stringstream ss(std::stringstream::in | std::stringstream::out);
ss << val << std::endl;
boost::archive::text_iarchive ia(ss);
ia >> BOOST_SERIALIZATION_NVP(testvector);
}
Kết quả khi thực hiện với v1.40 lib: testvector chứa hai yếu tố, {2, 2}
- thay vì {1, 2}
Lưu ý: s11n và de-s11n với cùng một phiên bản lib hoạt động hoàn hảo.
Chỉ cần thử với Boost 1.47 và véc-tơ kết quả vẫn là {2, 2}. Điều này bằng cách nào đó phù hợp với [vé này] (https://svn.boost.org/trac/boost/ticket/2271). –
_Vấn đề là, ngay cả khi vector_135.hpp được bao gồm, nó làm cho không có sự khác biệt bởi vì phương pháp tải thích hợp không được gọi là_ - Tôi cũng không phải là rất quan tâm về việc dựa vào một bản vá của một số loại. –
Trong Boost 1.48.0 vector_135.h, nó nói rõ rằng 1.35 không thể tương thích với 1.36-1.40. Có lẽ đây là một lỗi với 1.4.0 mà không phải là tài liệu? –