下面内容为不同系统和不同版本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. 基于CentOS的SSHD服务的Docker镜像

    原文地址 1.Dockerfile文件 FROM registry.aliyuncs.com/acs-sample/centos:6 MAINTAINER xuqh "xqh_163@163 ...

  2. C语言预处理命令的使用

    cppreference.com -> 预处理命令 -> 详细说明 预处理命令 #,## # 和 ## 操作符是和#define宏使用的. 使用# 使在#后的首个参数返回为一个带引号的字符 ...

  3. 虚构 css 父级选择器

    能 CSS 解决的绝不用 JS,这句话又一次故作装逼地说出来还是挺爽的... 比如下拉列表,能用 CSS 的 :focus 就不用 JS 的 .on("focus blur") 能 ...

  4. Django-Ajax进阶

    一.Ajax上传文件 1.form表单上传文件 文件和其他的数据类型不一样,是一个二进制的形式 Form上传文件的时候切记要加上:enctype="multipart/form-data&q ...

  5. 主攻ASP.NET.4.5.1 MVC5.0之重生:系统角色与权限(一)

    数据结构 权限分配 1.在项目中新建文件夹Helpers 2.在HR.Helpers文件夹下添加EnumMoudle.Cs namespace HR.Helpers { public enum Enu ...

  6. HTML如何禁止文本框输入

    禁止文本框输入有以下两种方法: 1,设置input为只读状态,代码如下: <input readonly="readonly" value="test1" ...

  7. PHP 获取真实IP地址

    function getClientIp($type = 0) { $type = $type ? 1 : 0; static $ip = NULL; if ($ip !== NULL) return ...

  8. String和StringBuilder、StringBuffer

    Java平台提供了两种类型的字符串:String和StringBuffer/StringBuilder String 只读字符串,这里的只读并不是指String类型变量无法被修改,而是指String类 ...

  9. LCN协调者服务集群

    官方文档: https://github.com/codingapi/tx-lcn/wiki/TxManager%E9%9B%86%E7%BE%A4%E8%AF%B4%E6%98%8E 核心原理 通过 ...

  10. vue中编辑代码是不注意格式时会报错

    1.是因为我们使用了eslint的代码规范,我们不要使用这种规范就好 2.在build目录下找到webpack.base.conf.js 在里面找到关于eslint的相关配置注释或移除掉就好