【发布时间】:2016-08-23 15:28:12
【问题描述】:
我正在使用 boost::archive 来序列化我的对象。我的代码在这里:
void Tracking::SaveMap() {
ofstream ofs("/home/yisha/Workspace/Map/map.txt");
boost::archive::text_oarchive oa(ofs);
oa << *mpMap;
}
bool Tracking::LoadMap() {
cout << "\nLoading map..." << endl;
Map* tmpMap;
ifstream ifs("/home/yisha/Workspace/Map/map.txt");
if(!ifs.good()) {
printf("ifs not good\n");
return false;
}
printf("after ifstream\n");
boost::archive::text_iarchive ia(ifs);
printf("after archive\n");
ia >> *tmpMap;
printf("after ia\n");
mpMap = tmpMap;
cout << "Loading map finished!" << endl;
return true;
}
mpMap 是一个实现了序列化功能的对象。
地图已成功保存,但我无法验证map.txt 是否正确,因为我无法重新加载地图。
我在 ros 内部运行,运行时错误只是进程死亡。我在这里得到了输出:
正在加载地图...
在 ifstream
之后 存档后
[mono-1] 进程已死亡 [pid 19721,退出代码 -11,cmd /home/yisha/Workspace/VO/ORB_SLAM2/Examples/ROS/ORB_SLAM2/Mono __name:=mono __log:=/home/yisha/.ros /log/811c9cf6-68a6-11e6-9123-408d5cb4a2ef/mono-1.log].
日志文件:/home/yisha/.ros/log/811c9cf6-68a6-11e6-9123-408d5cb4a2ef/mono-1*.log
机器上的所有进程都已死亡,roslaunch 将退出
它说的目录中没有日志文件。
【问题讨论】:
标签: c++ serialization boost ros