用VS2012安装OpenCV时出现这个错误,在网上搜索了很多解决方案,最终解决了问题。现在把这些解决方案汇总一下。
方案一:下载MSVCP100D.dll
1、复制文件“msvcr100d.dll”到系统目录下。
2、系统目录一般为:C:\WINNT\System32 64位系统为C:\Windows\SysWOW64。
3、最后点击开始菜单-->运行-->输入regsvr32 msvcr100d.dll,回车即可解决错误提示。
关于注册dll文件,参考:http://jingyan.baidu.com/article/08b6a591f472f814a80922fd.html
通过第一种方法,我解决了问题。
方案二:安装VC 2010运行库
缺少msvcr100.dll之类的问题,其实是系统没有安装VC 2010运行库的原因。建议不要在网上单独下载msvcr100.dll文件,而是要安装了VC 2010运行库来解决此问题。
VC 2010运行库是很多精简版软件和游戏必备的运行库!Microsoft Visual C++ 2010 Redistributable Package 安装 Visual C++ 库的运行时组件,使用户能够在未安装 Visual C++ 2010 的计算机上运行使用 Visual C++ 开发的应用程序。
有童鞋发现在网上下载了VC 2010运行库安装了也没有解决这个问题啊?仔细看看自己的操作系统是32位还是64位
提示:建议同时安装Microsoft .NET Framework 4以上
方案三:工程默认没有使用静态联编
主要是因为工程默认没有使用静态联编,把必须的DLL库一块编译进去导致的。
来自:http://blog.sina.com.cn/s/blog_4ca83f830100puz5.html
方案四:到官网下载vcredist_x64.exe和vcredist_x86.exe安装
首先不要去网上下载这两个dll文件,没必要.
然后到官网下载vcredist_x64.exe和vcredist_x86.exe安装好
再然后,把vc编译的程序的编译模式修改为release模式,因为这两个exe安装的分发运行时库仅仅对release模式有效
如果是人家的程序,提示msvcp100d.dll和msvcp100r.dll缺少,那就没有办法了,去网上下载吧。
来自:http://blog.csdn.net/ztz0223/article/details/8886247
另外,在运行时出现另外一个问题,是#include "stdafx.h"的位置问题,后来搜索了一下才明白原因。
stdafx的英文全称为:Standard Application Fram Extend
所谓头文件预编译,就是把一个工程中使用的一些MFC标准头文件(如Windows.H、Afxwin.H)预先编译,以后该工程编译时,不再编译这部分头文件,仅仅使用预编译的结果。这样可以加快编译速度,节省时间。
预编译头文件通过编译stdafx.cpp生成,以工程名命名,由于预编译的头文件的后缀是“pch”,所以编译结果文件是projectname.pch。
编译器通过一个头文件stdafx.h来使用预编译头文件。stdafx.h这个头文件名是可以在project的编译设置里指定的。编译器认为,所有在指令#include "stdafx.h"前的代码都是预编译的,它跳过#include "stdafx. h"指令,使用projectname.pch编译这条指令之后的所有代码。
因此,所有的MFC实现文件第一条语句都是:#include "stdafx.h"。如果把#include "stdafx.h"放在其他include语句下面,就会出现问题。