Как заставить Boost.Serialization работать с PhysicsFS

Я хотел бы использовать PhysFS в сочетании с Boost.Serialization. Здесь я нашел реализацию, которая использует Boost.Iostreams для создания потока файлов PhysFS. Он работает для базовых операций. Если я попытаюсь использовать его с Boost.Serialization, я получаю следующую ошибку во время выполнения:

/usr/include/boost/iostreams/detail/optional.hpp:55: T& boost::iostreams::detail::optional<T>::operator*() [with T = boost::iostreams::detail::concept_adapter<PhysFS::FileDevice>]: Assertion `initialized_' failed.
Aborted

Вот пример кода.

PhysFS::init(argv[0]);
PhysFS::setWriteDir(".");
PhysFS::FileStream ofs("test.xml", PhysFS::OM_WRITE);
boost::archive::xml_oarchive xml(ofs);
vec2 vec(3.1415, 2.5);
xml << BOOST_SERIALIZATION_NVP(vec);
ofs.close();
PhysFS::deinit();

Есть ли способ получить рабочую оболочку потока файлов для PhysFS, которая будет работать с такими библиотеками, как Boost.Serialization?

1 ответ

Решение

Моя ошибка заключалась в вызове ofs.close(), а также в вызов PhysFS::deinit до уничтожения ofs.

Другие вопросы по тегам