下面内容为不同系统和不同版本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版本之间进行配置的注意事项的更多相关文章

  1. Ubuntu下OpenCV不能被某个python版本识别

    Ubuntu下OpenCV不能被某个python版本识别 Solution: 可以进入相应版本的python,查看该python的path: python import sys print(sys.p ...

  2. 【RMAN】RMAN跨版本恢复(下)--大版本异机恢复

    [RMAN]RMAN跨版本恢复(下)--大版本异机恢复 BLOG文档结构图 ORACLE_SID=ORA1024G 关于10g的跨小版本恢复参考:http://blog.chinaunix.net/u ...

  3. Spring Boot版本,Spring Cloud版本与组件版本关系

    我们在学习Spring Cloud时,可能总是碰到以下问题: 1.Spring Boot版本与Spring Cloud版本关系 2.启动时,报莫名其妙的错,稀里糊涂的换个版本就好了 3.这么多版本,用 ...

  4. 高版本->低版本迁移,低版本客户端连接高版本数据库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,若 ...

  5. 高版本api在低版本中的兼容

    直接上例子,看如何避免crash. eg:根据给出路径,获取此路径所在分区的总空间大小. 文档说明:获取文件系统用量情况,在API level 9及其以上的系统,可直接调用File对象的相关方法,以下 ...

  6. 怎样去除SVN中的某个版本之前的所有版本

    地狱门神 在某些时候,我们可能需要一个存放二进制文件的SVN库,用来保存每日构建的结果等.但是这种库会趋于越来越大,最后会占用很多磁盘空间.这时我们会想到能不能删掉某个版本之前的所有版本,以节省磁盘空 ...

  7. SQL Server 2000 sp2 及更低版本不受此版本的 Windows 支持

    SQL Server 2000 sp2 及更低版本不受此版本的 Windows 支持.在安装了 SQL Server 2000 之后请应用 sp3. 出现这种现象的原因在于:Windows Serve ...

  8. 如何让VMware低版本运行VMware高版本创建的虚拟机

    如何让VMware低版本运行VMware高版本创建的虚拟机 问题描述: 本机安装的VMware Workstation是10版本,之前VMware Workstation 11版本创建的虚拟机,在运行 ...

  9. PHP有两个不同的版本:4.x系列版本和5.x系列版本

    在为用户提供动态内容方面,PHP和MySQL是一个强大的组合.这些年来,这两项产品已经跨越了它们最初的应用舞台,现在,一些世界上最繁忙的网站也在应用它们.虽然它们当初都是开源软件,只能在UNIX/Li ...

随机推荐

  1. Map中object转换成boolean类型

    Ajax请求查询数据之后,返回的是map类型, resultMap.put("flag", flag); 在接收到数据之后判断时,转换出现异常,导致页面点击按钮之后,页面没有反应, ...

  2. Android:日常学习笔记(9)———探究广播机制

    Android:日常学习笔记(9)———探究广播机制 引入广播机制 Andorid广播机制 广播是任何应用均可接收的消息.系统将针对系统事件(例如:系统启动或设备开始充电时)传递各种广播.通过将 In ...

  3. SPOJ - HORRIBLE 【线段树】

    思路 线段树 区间更新 模板题 注意数据范围 AC代码 #include <cstdio> #include <cstring> #include <ctype.h> ...

  4. 【HackerRank】Median

    题目链接:Median 做了整整一天T_T 尝试了各种方法: 首先看了解答,可以用multiset,但是发现java不支持: 然后想起来用堆,这个基本思想其实很巧妙的,就是维护一个最大堆和最小堆,最大 ...

  5. 【HackerRank】Manasa and Stones

    Change language : Manasa 和 她的朋友出去徒步旅行.她发现一条小河里边顺序排列着带有数值的石头.她开始沿河而走,发现相邻两个石头上的数值增加 a 或者 b. 这条小河的尽头有一 ...

  6. 前端常用js脚本

    常用js整理 //获取Url中的参数值 function getQueryString(name) { var reg = new RegExp("(^|&)" + nam ...

  7. 2015 ACM/ICPC Asia Regional Changchun Online HDU 5444 Elven Postman【二叉排序树的建树和遍历查找】

    Elven Postman Time Limit: 1500/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)T ...

  8. Complex social network Partition for Balanced Subnetworks---Hao Lan Zhang,Jiming Liu,Chunyu Feng,Chaoyi Pang,Tongliang Li,Jing He阅读

    摘要:Abstract—Complex social network analysis methods have been applied extensively in various domains ...

  9. 算法总结之 在数组中找到出现次数 > N/K的数

    题目1 给定一个整型数组arr,  打印其中出现次数大于一半的数, 如果没有这样的数,打印提示信息 进阶 给定一个整型数组arr, 再给定一个整数K, 打印所有出现次数大于 N/K的数,如果没有这样的 ...

  10. WEB开发中常见漏洞

    1.sql注入 SQL注入在黑客领域是一种非常常见的攻击手段,大家应该都听说过很多数据泄漏的案例,其中大部分都是采用SQL注入来获取数据的. SQL注入一般是前端向后台提交数据的时候,在数据中加入SQ ...