opencv2.0在mfc中使用vector崩溃问题

时间:2022-12-31 00:20:03

首先我描述一下我的机器配置环境 OpenCV2.4.10+vs2008+vs2010+vs2013,由于Opencv2.4.10已经完成了vc10以上的配置库编译。当我使用opencv使用findcontours和findcirclegrid等算法时候,传入vector容器会出现崩溃,瞬间就把人给搞崩溃了如图所示。看了很多文章和资料也没有一个人对这种问题做一个比较系统的概况,今天我就把这种问题的解决方法都列出来。

opencv2.0在mfc中使用vector崩溃问题

花了一天的时间,简而言之原因有多种

第一种:你安装了多种编译环境,例如当你安装了vs2008+vs2010这两个编译环境都在系统环境变量下做了修改,导致vs2010环境替换vs2008的环境变量,当你运行vs2008编译程序时其实调用的是vc10的编译器,因此当你运行opencv程序时就变成了:vc10编译的程序使用vc9的编译库,自然就导致vector访问崩溃。

第二种:只安装了一个编译环境,并且正确配置编译库,也出现问题,这样我个人建议用cmake生成对应的VC的文件,生成对应的opencv库编译库,然后在install文件夹下找到x86或者x64的库,把它配置到vs20**上我相信可以解决(推荐英文vs开发环境)

第三种:vs编译器没有配置好,debug环境下:配置属性-》常规-》mfc中使用-》共享dl;C++-》代码生成-》运行库-》多线程调试dll(MDd)

release环境下:配置属性-》常规-》mfc中使用-》共享dl;C++-》代码生成-》运行库-》多线程d(MT)。

个人建议:个人建议在一台机器上最好安装一种编译环境,这样就可以避免一些vs之间环境变量覆盖的问题,另外opencv编译库最好自己多编译一下,不仅调试的时候可以定位程序bug出处,而且可学习一下opencv大神们的编程技巧。

另外跟人的帖子也发表在Opencv中文论坛上。