1

我想将 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 等库一起使用的工作文件流包装器?

4

1 回答 1

0

我的错误是调用 ofs.close(),并在销毁 ofs 之前调用了 PhysFS::deinit。

于 2011-10-26T12:04:50.090 回答