我想将PhysFS与Boost.Serialization结合使用。我找到了一个实现here,它使用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等库的工作文件流包装器?
答案 0 :(得分:0)
我的错误是调用ofs.close(),并在破坏ofs之前调用PhysFS :: deinit。