在 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\bin
或 C:\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 时出现致命错误,找不到文件的主要内容,如果未能解决你的问题,请参考以下文章
如何将 vs2008 c++ OpenCV dll 构建到 vs2008 C#?
Windows下使用VS2008编译OpenCV 2.1 添加Intel TBB和Python支持