现在的位置: 首页 > 综合 > 正文

opencv+VS2008安装配置

2013年04月25日 ⁄ 综合 ⁄ 共 1797字 ⁄ 字号 评论关闭
windows 7下安装及配置:
参考链接:
VS 2008下编译OpenCV项目
参考链接:
VS2008下运行代码还有如下问题:
丢失MSVCP100D.dll MSVCR100D.dll

出现这个原因是由于2.4.7版本仅仅提供了VS2010和VS2012编译的dll,没有提供VS2008编译版本,而在VS2008的环境中,是不存在MSVCP100D.dll MSVCR100D.dll这2个dll的。
解决方法有3种:
方法1,将改成项目工程改成release版本编译运行,不要忘记修改opencv链接库的名字(后缀没有d的lib),如下所示:
opencv_core247.lib
opencv_imgproc247.lib
opencv_highgui247.lib
opencv_ml247.lib
opencv_video247.lib
opencv_features2d247.lib
opencv_calib3d247.lib
opencv_objdetect247.lib
opencv_contrib247.lib
opencv_legacy247.lib
opencv_flann247.lib
方法2,下载MSVCP100D.dll MSVCR100D.dll并将其放在c:\windows\system32下(全局有效),或者是放在当前目录下(仅对当前项目有效),建议用后者。实践证明,这个方法存在很大的问题,会导致程序运行异常,后面我会提到这个问题)。
方法3,在VS 2008里面重新编译opencv,暂时没有测试该方法。

imread导致程序异常退出(使用cvLoadImage正常)
VS 2008 Debug + opencv 2.4.7
测试程序:
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>

using namespace cv;
using namespace std;

int main( int argc, char** argv )
{
	Mat image;
	image = imread("../opencv-logo.png", CV_LOAD_IMAGE_COLOR);   // Read the file

	if(! image.data )                              // Check for invalid input
	{
		cout <<  "Could not open or find the image" << std::endl ;
		return -1;
	}

	namedWindow( "Display window", CV_WINDOW_AUTOSIZE );// Create a window for display.
	imshow( "Display window", image );                   // Show our image inside it.

	waitKey(0);                                          // Wait for a keystroke in the window
	return 0;
}
报错:
opencv_debug.exe 中的 0x0036299f 处未处理的异常: 0xC0000005: 读取位置 0xcccccccc 时发生访问冲突
调试,查看信息:
msvcr100d.dll有问题?
原来是我用VS2008编译的工程用的是VS2010生成的dll,看来盲目添加MSVCP100D.dll MSVCR100D.dll是不行的
解决方案:
1. 使用较旧的opencv(例如opencv2.3就有用VS2008编译的动态链接库)
2. 在自己的环境下(VS2008)重新编译opencv2.4.7?暂时没有测试。

抱歉!评论已关闭.