在 VS 2008 上启动 OpenCV 2.4.6 时出现致命错误,找不到文件

Posted

技术标签:

【中文标题】在 VS 2008 上启动 OpenCV 2.4.6 时出现致命错误,找不到文件【英文标题】:Fatal error in starting up OpenCV 2.4.6 on VS 2008, file not found 【发布时间】:2013-11-13 08:38:36 【问题描述】:

我正在使用本教程在 VS 2008 上开始使用 OpenCV 2.4.6: http://docs.opencv.org/doc/tutorials/introduction/windows_visual_studio_Opencv/windows_visual_studio_Opencv.html

我遵循了所有说明(我的 OpenCV 不在默认的 Program Files (x86) 文件夹中,它在

C:\opencv_built

与教程中的不同,我放了非常简单的代码,只是为了确保所有包含的文件都可以访问以及是否成功构建等:

#include "stdafx.h"

#include <iostream> // for standard I/O
#include <string>   // for strings
#include <iomanip>  // for controlling float print precision
#include <sstream>  // string to number conversion

#include <opencv2/imgproc/imgproc.hpp>  // Gaussian Blur
#include <opencv2/core/core.hpp>        // Basic OpenCV structures (cv::Mat, Scalar)
#include <opencv2/highgui/highgui.hpp>  // OpenCV window I/O
using namespace std;
using namespace cv;

double getPSNR ( const Mat& I1, const Mat& I2);
Scalar getMSSIM( const Mat& I1, const Mat& I2);


int main(int argc, char *argv[])

    return 0;

但是当我尝试构建时遇到致命错误:

fatal error C1083: Cannot open include file: 'opencv2/imgproc/imgproc.hpp': No such file or directory   c:\Users\Administrator\Documents\Visual Studio 2008\Projects\firstopencv\firstopencv\firstopencv.cpp    17  

这显然是指这一行:

#include <opencv2/imgproc/imgproc.hpp>  // Gaussian Blur

我不知道在哪里可以找到 dll 文件,或者下一步该做什么?我知道这一定很容易,但我已经搜索了任何 dll 文件,例如。

opencv_core243d.lib

但我没有得到任何搜索结果。

【问题讨论】:

【参考方案1】:

1. 检查 \vc10 文件夹的路径。它应该是:

C:\opencv_built\build\x86\vc10

C:\opencv_built\x86\vc10

2.转到

Start>Edit environment variables for your account>Under System variables > New...

变量名称:OPENCV_DIR

变量值:在此处插入您从第 1 步开始的路径。


3.打开Visual Studio,新建项目,进入Property Pages


4.C/C++ > 附加包含目录下

插入$(OPENCV_DIR)\..\..\include


5.Linker > General > Additional Include Directories 下

插入$(OPENCV_DIR)\lib


6a.(对于 DEBUG 属性!)在 Linker > Input > Additional Dependencies

插入

opencv_core246d.lib
opencv_imgproc246d.lib
opencv_highgui246d.lib
opencv_ml246d.lib
opencv_video246d.lib
opencv_features2d246d.lib
opencv_calib3d246d.lib
opencv_objdetect246d.lib
opencv_contrib246d.lib
opencv_legacy246d.lib
opencv_flann246d.lib

6b.(对于 RELEASE 属性!)在 Linker > Input > Additional Dependencies

插入

opencv_core246.lib
opencv_imgproc246.lib
opencv_highgui246.lib
opencv_ml246.lib
opencv_video246.lib
opencv_features2d246.lib
opencv_calib3d246.lib
opencv_objdetect246.lib
opencv_contrib246.lib
opencv_legacy246.lib
opencv_flann246.lib

这应该足够了。如果运行代码后缺少 .dll 窗口,请将所需的 .dll 从您的 C:\opencv_built\build\x86\vc10\binC:\opencv_built\x86\vc10\bin 复制到您的项目文件夹中。

【讨论】:

好的,我按照你说的做了,我不再收到那个错误了!但是,现在我收到此错误:FATAL ERROR LNK1104: cannot open file opencv_core246d.lib(尽管我在附加依赖项中输入了它)。然后我将opencv_core246d.dll粘贴到我的项目路径中:C:\Users\Administrator\Documents\Visual Studio 2008\Projects\firstopencv\,我也将它粘贴在x64子目录中,但是这个opencv_core246d.dll仍然存在没找到! 等等。您想在哪台机器上开发应用程序? x64 还是 x86 ? 它是 x64。但我没有使用包含 x86 的路径名,例如 C:\opencv_built\x86\vc10\bin。相反,我使用了我在这台机器上找到的真实路径,即:C:\opencv_built\bin。 你的 C:\opencv_built\ 文件夹中有什么? 我有以下文件夹:apps/, bin/, CMakefiles/, data/, doc/, include/, include1/, install/, junk/, lib/, modules/, opencv2/, unix-install/、win-install/ 以及一些 CMake 和 VS 文件。【参考方案2】:

它不是一个dll文件,它是一个头文件。该文件名为 imgproc.hpp

如果你的编译器找不到它,要么是因为它不存在,要么是因为你没有告诉编译器在哪里找到它。

VS 的重要部分是“附加包含目录”,在您关注的网页上再次查看该部分。

【讨论】:

对!我搞混了。我搜索了 imgproc.hpp,我在这个目录中找到了它:C:\Working Opecv copy\opencv_built\include\opencv2\imgproc。然后在 Linker -> General 下,我将 Additional Library dependencies 的值更改为 C:\Working Opecv copy\opencv_built\include。但仍然遇到同样的错误。 其他包括目录【参考方案3】:

好的,解决方法是这样的:

在链接器下 -> 常规 -> 其他库依赖项

我说:

C:\opencv_built\lib\Debug

【讨论】:

以上是关于在 VS 2008 上启动 OpenCV 2.4.6 时出现致命错误,找不到文件的主要内容,如果未能解决你的问题,请参考以下文章

应用程序未在未安装 VS 2008 的 PC 上运行

OpenCV 2.4.8 视觉工作室 2012

如何将 vs2008 c++ OpenCV dll 构建到 vs2008 C#?

Windows下使用VS2008编译OpenCV 2.1 添加Intel TBB和Python支持

Windows7 64位下vs2008配置OpenCV2 3 1

OpenCV学习:体验ImageWatch