本文主要是介绍【视觉SLAM】ORBSLAM3 window下Debug编译遇到Expression: __acrt_first_block == header,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
ORBSLAM3 window下Debug编译遇到Expression: __acrt_first_block == header
- window下编译ORBSLAM3
- 解决方法 一 (推荐)
- 解决方法 二
- 调试运行速度慢的问题
- vector iterators incompatible错误
window下编译ORBSLAM3
github:https://github.com/lydieusang/orbslam3-windows
配置了Release版本没有问题;想调试程序的时候发现Debug版本会报错.
按照查找资料的分析,是因为exe中变量的内存在调用的库中释放了,导致出错,解决方法目前查到了两种
解决方法 一 (推荐)
https://www.cnblogs.com/CGwolke/p/7851994.html
直接对相应的内存进行预分配:
ORBExtractor.cc中作如下修改
//vector<cv::KeyPoint> vKeysCell;修改如下vector<cv::KeyPoint> vKeysCell(10000); FAST(mvImagePyramid[level].rowRange(iniY,maxY).colRange(iniX,maxX),vKeysCell,iniThFAST,true);
解决方法 二
https://blog.csdn.net/jszj/article/details/81317471
对opencv进行了修改,添加了接口,对所有vector类传出的参数在使用完后调用此接口来释放内存即可
调试运行速度慢的问题
编译选项修改,开启O2编译
https://blog.csdn.net/m0_37829462/article/details/124747028
Visual Studio开启O2编译优化选项,提示 “/O2”和“/RTC1”命令行选项不兼容 错误
https://blog.csdn.net/qq_52293358/article/details/124440998
vector iterators incompatible错误
修改:
for(vector<KeyFrame*>::const_iterator itKF=mvpLocalKeyFrames.begin(), itEndKF=mvpLocalKeyFrames.end(); itKF!=itEndKF; itKF++)
//改为
for(int i=0;i<mvpLocalKeyFrames.size();i++);//再把
KeyFrame* pKF = *itKF;
//变成
KeyFrame* pKF = mvpLocalKeyFrames[i];
https://www.cnblogs.com/jiangym1998/p/13673145.html
最后祝大家的代码一调就通。
这篇关于【视觉SLAM】ORBSLAM3 window下Debug编译遇到Expression: __acrt_first_block == header的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!