不同OpenCV版本和不同VS版本之间进行配置的注意事项
下面内容为不同系统和不同版本VS+不同版本OpenCV之间进行配置时的注意事项。本教程中开始提到如果VS版本和OpenCV版本相匹配的话,只要按上述步骤配置都是没有问题的。但是如果说版本不匹配的话,就会出现问题。
什么是版本不匹配呢,在D:\OpenCV244\opencv\build\x86,(不同解压路径位置不同)
有vc9和vc10和vc11这三个东西,或许你会发现在OpenCV相应的目录下是没有vc11这个东西的,vc11是属于VS2012的编译器部分,也就是说在OpenCV243里是不正式支持VS2012的,在OpenCV244里才开始正式支持VS2012,vc10则是属于VS2010的编译器部分,而无论是244还是243里面都有vc10,所以如果你用的是VS2012以下版本的话,是不会出现OpenCV和VS不匹配的问题。网上的教程都是在VS2010下配置的OpenCV243,所以这样是不会出现版本不匹配问题的,只要按照步骤配置那四个部分就好了。
但是,如果你要配置的工作环境是VS2012,然后又是OpenCV243,如果你按步骤把四个部分都设置好了,那会出现什么问题呢,编译是可以编译的,但是在执行的话会提示缺少MSVCP100d.dll,这个dll是什么呢,这个dll是属于支持VS2010部分的,所以,我们需要找到MSVCP100d.dll这个文件,你可以从网上搜索,也可以直接从装有VS2010的电脑上直接复制一份。然后把MSVCP100d.dll复制到system32目录下,并注册,重新运行程序,不会再提示缺少MSVCP100d.dll,但是又出现了一个问题,缺少MSVCR100d.dll,同样,和上面步骤一样,注册好之后再一次运行程序,恭喜你,这次可以了。
http://www.verydemo.com/demo_c131_i4072.html,这是VS2012+OpenCV243的配置,里面有提到上述问题,虽然网页是英文的,但是都很简单,读完就理解了。
笔者的第一次配置环境就是这样的,VS2012+OpenCV243,搞了好几天才搞定,我是把所有出现的情况都设置了,包括cmake,包括各种路径,包括把1.0和243的dll都复制到system32下,当然也包括上述所说到的MSVCP100d.dll和MSVCR100d.dll,最后也是稀里糊涂的配置好了,根本不知道那些配置都是干什么的。
可是,后来笔者实验室换了电脑,笔者装了64位的系统,再一次进行配置,同样出现了以上问题,最后也是把MSVCP100d.dll和MSVCR100d.dll复制到system32,但是这次却不行了,提示MSVCP100d.dll的版本不兼容,这是因为我的系统是64位的,上次的dll不能用,这下郁闷了。后来无意间发现OpenCV244正式支持VS2012,于是,我果断换了OpenCV244,然后把那四个地方都配置好了,一次就能运行了,没有提示MSVCP100d.dll和MSVCR100d.dll的问题。
在这里说一下系统的位数问题,其实,OpenCV完全不用考虑系统位数问题,因为它里面都带着了x86(32位)和x64(64位),主要是VS安装文件的位数问题,如果你的VS安装文件是32位的,那你就按32位的来配置,即选择x86的文件,和你的电脑系统是多少位的没有关系,即使你的系统是64位的,但是它肯定是向下兼容32位的,如果VS的是安装文件64位的,就选择x64的文件。如果你的电脑系统是32位的,那就只能装32位的VS了,它是不能向上兼容的。
所以,综上,如果说OpenCV的版本是最新的,即244,那么无论你是什么版本的VS,只要按步骤配置都没有什么问题,但是如果不是最新的,即OpenCV244,同时你的VS又是最新的2012,那么就会出现上述的问题。所以比较好的方法就是装最新的OpenCV,使用比较老的VS,比如说VS2005,2008或者2010,而且,我们大可不必担心OpenCV什么时候不再支持老版本VS,像忽略支持VC++6.0那也是在很长一段时间之后才不再支持的。
笔者没有VS2012和OpenCV244的下载链接,如果大家有需要的可以向笔者索要,包括MSVCP100d.dll和MSVCR100d.dll。
好了,以上就是本教程的全部内容,系统地讲了VS和OpenCV配置的问题。如果大家以后在配置工作环境这一块有什么问题,我能解决的尽量帮助。很荣幸也很开心能够得到冷月哥的赏识,提升我为YY群的管理员,既然成为了管理员,也有了一定的责任,这算是自己为计算机视觉群尽的一点绵薄之力吧。另外,感谢广州-M-伍兄和长春|F-舞雨妹子提示我作这样一个教程。最后,祝大家生活快乐,学习进步。
FreeBamb
2015年11月7日
转载请注明出处。
不同OpenCV版本和不同VS版本之间进行配置的注意事项的更多相关文章
- Ubuntu下OpenCV不能被某个python版本识别
Ubuntu下OpenCV不能被某个python版本识别 Solution: 可以进入相应版本的python,查看该python的path: python import sys print(sys.p ...
- 【RMAN】RMAN跨版本恢复(下)--大版本异机恢复
[RMAN]RMAN跨版本恢复(下)--大版本异机恢复 BLOG文档结构图 ORACLE_SID=ORA1024G 关于10g的跨小版本恢复参考:http://blog.chinaunix.net/u ...
- Spring Boot版本,Spring Cloud版本与组件版本关系
我们在学习Spring Cloud时,可能总是碰到以下问题: 1.Spring Boot版本与Spring Cloud版本关系 2.启动时,报莫名其妙的错,稀里糊涂的换个版本就好了 3.这么多版本,用 ...
- 高版本->低版本迁移,低版本客户端连接高版本数据库EXP导出报错EXP-00008,ORA-01455,EXP-00000
生产环境: 源数据库:RHEL + Oracle 11.2.0.3 目标数据库:HP-UX + Oracle 10.2.0.4 需求:迁移部分表 11.2.0.3-->10.2.0.4,若 ...
- 高版本api在低版本中的兼容
直接上例子,看如何避免crash. eg:根据给出路径,获取此路径所在分区的总空间大小. 文档说明:获取文件系统用量情况,在API level 9及其以上的系统,可直接调用File对象的相关方法,以下 ...
- 怎样去除SVN中的某个版本之前的所有版本
地狱门神 在某些时候,我们可能需要一个存放二进制文件的SVN库,用来保存每日构建的结果等.但是这种库会趋于越来越大,最后会占用很多磁盘空间.这时我们会想到能不能删掉某个版本之前的所有版本,以节省磁盘空 ...
- SQL Server 2000 sp2 及更低版本不受此版本的 Windows 支持
SQL Server 2000 sp2 及更低版本不受此版本的 Windows 支持.在安装了 SQL Server 2000 之后请应用 sp3. 出现这种现象的原因在于:Windows Serve ...
- 如何让VMware低版本运行VMware高版本创建的虚拟机
如何让VMware低版本运行VMware高版本创建的虚拟机 问题描述: 本机安装的VMware Workstation是10版本,之前VMware Workstation 11版本创建的虚拟机,在运行 ...
- PHP有两个不同的版本:4.x系列版本和5.x系列版本
在为用户提供动态内容方面,PHP和MySQL是一个强大的组合.这些年来,这两项产品已经跨越了它们最初的应用舞台,现在,一些世界上最繁忙的网站也在应用它们.虽然它们当初都是开源软件,只能在UNIX/Li ...
随机推荐
- Python之函数总结
一,函数的定义与调用 定义:def 关键词开头,空格之后接函数名称和圆括号(),最后还有一个":". def 是固定的,不能变,必须是连续的def三个字母,不能分开 def 函数名 ...
- LeetCode:全排列【46】
LeetCode:全排列[46] 题目描述 给定一个没有重复数字的序列,返回其所有可能的全排列. 示例: 输入: [1,2,3] 输出: [ [1,2,3], [1,3,2], [2,1,3], [2 ...
- HTTP学习笔记02-HTTP报文格式之概述
HTTP学习笔记02-HTTP报文格式之概述 HTTP学习笔记02-HTTP报文格式之概述 HTTP报文格式 报文的语法 起始行 首部 实体部分 学习一个协议感觉最有意思的就是看包结构…在我看来这是唯 ...
- 主攻ASP.NET.4.5.1 MVC5.0之重生:Web项目语音朗读网页文本,简单语音提示浏览状态
第一步 添加SpeechLib.dll 下载SpeechLib.dll: 在项目中并且引用DLL using SpeechLib; using System.Threading; 第二步 调用并使用 ...
- MySQL-重做日志 redo log -原理
[redo log buffer][redo log file]-原理 目录: 1.重做日志写入过程图 2.相关知识点汇总图 3.redo_log_buffer 原理 4.redo_log_file ...
- PHP 面向对象及Mediawiki 框架分析(一)
此文是一JAVA哥大神写的,虽然他不懂PHP.我这人PHP半桶水,面向对象更是半桶水都没有,此文原本是为了让我理解MediaWiki的运行机制的,愣是用他的JAVA的面向对象知识,对Mediawiki ...
- log4j2.xml配置文件
<?xml version="1.0" encoding="UTF-8"?> <!--日志级别以及优先级排序: OFF > FATAL ...
- MVC 中 System.Web.Optimization 找不到引用
在MVC4的开发中,如果创建的项目为空MVC项目,那么在App_Start目录下没有BundleConfig.cs项的内容,在手动添加时在整个库中都找不到:System.Web.Optimizatio ...
- Ansi 与 Unicode 字符串类型的互相转换
WideCharToMultiByte 实现宽字节转换到窄字节MultiByteToWideChar 实现窄字节转换到宽字节 WideCharToMultiByte 的代码页用来标记与新转换的字符串相 ...
- QT 使用QPainter 绘制图形 和 世界变换 world transform
1. 绘制椭圆 饼状型 贝塞尔曲线 绘制图像重写方法 void paintEvent(QPaintEvent *event)即可. void Widget::paintEvent(QPaintEve ...