【视觉SLAM】ORBSLAM3 window下Debug编译遇到Expression: __acrt_first_block == header

本文主要是介绍【视觉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++)
//改为
forint i=0;i<mvpLocalKeyFrames.size();i++;//再把
KeyFrame* pKF = *itKF;
//变成
KeyFrame* pKF = mvpLocalKeyFrames[i];

https://www.cnblogs.com/jiangym1998/p/13673145.html

最后祝大家的代码一调就通。Alt

这篇关于【视觉SLAM】ORBSLAM3 window下Debug编译遇到Expression: __acrt_first_block == header的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/644069

相关文章

qtcreater配置opencv遇到的坑及实践记录

《qtcreater配置opencv遇到的坑及实践记录》我配置opencv不管是按照网上的教程还是deepseek发现都有些问题,下面是我的配置方法以及实践成功的心得,感兴趣的朋友跟随小编一起看看吧... 目录电脑环境下载环境变量配置qmake加入外部库测试配置我配置opencv不管是按照网上的教程还是de

Android NDK版本迭代与FFmpeg交叉编译完全指南

《AndroidNDK版本迭代与FFmpeg交叉编译完全指南》在Android开发中,使用NDK进行原生代码开发是一项常见需求,特别是当我们需要集成FFmpeg这样的多媒体处理库时,本文将深入分析A... 目录一、android NDK版本迭代分界线二、FFmpeg交叉编译关键注意事项三、完整编译脚本示例四

idea maven编译报错Java heap space的解决方法

《ideamaven编译报错Javaheapspace的解决方法》这篇文章主要为大家详细介绍了ideamaven编译报错Javaheapspace的相关解决方法,文中的示例代码讲解详细,感兴趣的... 目录1.增加 Maven 编译的堆内存2. 增加 IntelliJ IDEA 的堆内存3. 优化 Mave

Java编译生成多个.class文件的原理和作用

《Java编译生成多个.class文件的原理和作用》作为一名经验丰富的开发者,在Java项目中执行编译后,可能会发现一个.java源文件有时会产生多个.class文件,从技术实现层面详细剖析这一现象... 目录一、内部类机制与.class文件生成成员内部类(常规内部类)局部内部类(方法内部类)匿名内部类二、

Nginx指令add_header和proxy_set_header的区别及说明

《Nginx指令add_header和proxy_set_header的区别及说明》:本文主要介绍Nginx指令add_header和proxy_set_header的区别及说明,具有很好的参考价... 目录Nginx指令add_header和proxy_set_header区别如何理解反向代理?proxy

如何使用Python实现一个简单的window任务管理器

《如何使用Python实现一个简单的window任务管理器》这篇文章主要为大家详细介绍了如何使用Python实现一个简单的window任务管理器,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起... 任务管理器效果图完整代码import tkinter as tkfrom tkinter i

Jackson库进行JSON 序列化时遇到了无限递归(Infinite Recursion)的问题及解决方案

《Jackson库进行JSON序列化时遇到了无限递归(InfiniteRecursion)的问题及解决方案》使用Jackson库进行JSON序列化时遇到了无限递归(InfiniteRecursi... 目录解决方案‌1. 使用 @jsonIgnore 忽略一个方向的引用2. 使用 @JsonManagedR

IDEA编译报错“java: 常量字符串过长”的原因及解决方法

《IDEA编译报错“java:常量字符串过长”的原因及解决方法》今天在开发过程中,由于尝试将一个文件的Base64字符串设置为常量,结果导致IDEA编译的时候出现了如下报错java:常量字符串过长,... 目录一、问题描述二、问题原因2.1 理论角度2.2 源码角度三、解决方案解决方案①:StringBui

Goland debug失效详细解决步骤(合集)

《Golanddebug失效详细解决步骤(合集)》今天用Goland开发时,打断点,以debug方式运行,发现程序并没有断住,程序跳过了断点,直接运行结束,网上搜寻了大量文章,最后得以解决,特此在这... 目录Bug:Goland debug失效详细解决步骤【合集】情况一:Go或Goland架构不对情况二:

在MySQL执行UPDATE语句时遇到的错误1175的解决方案

《在MySQL执行UPDATE语句时遇到的错误1175的解决方案》MySQL安全更新模式(SafeUpdateMode)限制了UPDATE和DELETE操作,要求使用WHERE子句时必须基于主键或索引... mysql 中遇到的 Error Code: 1175 是由于启用了 安全更新模式(Safe Upd