Visual Studio 2012: 'opencv2/opencv.hpp' : 没有那个文件或目录 (C1083)

17
这个问题已经被问过几次了,有些答案,但这个问题更加具体,附加目录路径设置正确(文件已被找到)。
尽管如此,在构建我的项目时我遇到了以下错误:
 fatal error C1083: Cannot open include file: 
 'opencv2/opencv.hpp': No such file or directory

但是我可以右键单击文件并在Visual Studio 2012中打开它吗?

文件可以被找到

我尝试了:

1)指定完整路径:可行!

#include <D:\frameworks\opencv_2_4\build\include\opencv2\opencv.hpp>

2) 将文件放到 C:\ 目录下不起作用(添加额外的目录)

3) 与相同 include 语法的空项目(添加额外的目录)工作!

4) 我已经使用 CMake 配置了一个 VS2010 版本的相同项目,并且在那里我遇到了同样的问题。

有什么提示可以解决这个错误吗?


使用Cmake生成项目文件,以确保包含目录和库正确链接。 - scap3y
10个回答

14

打开配置属性 > C/C++ > 常规,编辑字段 附加包含目录以添加以下三个路径(用于头文件): C:\OpenCV2.3\build\include\opencv C:\OpenCV2.3\build\include\opencv2 C:\OpenCV2.3\build\include


5

项目属性 => C/C++ => 一般 => 附加包含目录 => "将您的openCV文件夹中库的地址放入此处,例如:C:\opencv\build\include 如下图所示: enter image description here


3
如果您将头文件放在项目中,可以使用相对路径访问头文件,具体请参考 @CalaveraLoco 的回答。
但是更好的方法是将项目文件夹路径包含在项目设置中。
1. 打开项目的属性。 2. 选择 C/C++。 3. 选择 General。 4. 将 $(ProjectDir); 添加到 Addition Include Directories 中。

2
除了现有的答案之外,尝试更改。
<opencv2/core.hpp> 

to

"opencv2/core.hpp". 

1
在我的情况下,问题与导出的类有关。 我有两个VS项目,让我们称它们为A和B。 项目A使用来自项目B的类;项目B使用OpenCV的类。 项目A没有使用(也没有链接)OpenCV。(可以想象,项目A通过项目B使用openCV)。 但是,如果由A使用的B的任何导出类具有OpenCV类型的私有成员(例如cv::Mat),则会出现错误C1083,尽管我已经在项目B中正确链接了OpenCV。 我的解决方案是小心处理项目B的导出类的*.hpp文件中的包含文件。 希望这对您有用。

1
在Windows上:
  1. 在搜索栏中,搜索并选择“系统”(控制面板)。点击“高级系统设置”链接。
  2. 点击环境变量。在系统变量中,点击“Path”。
  3. 点击“修改”。点击“新建”,添加以下内容(不需要引号):“C:\opencv\build\x64\vc14\lib\”。
  4. 再次点击“新建”,添加以下内容(不需要引号):“C:\opencv\build\x64\vc14\bin\”。
  5. 重启Windows。
  6. 打开Visual Studio并创建一个新项目。在“解决方案资源管理器”中:
  7. 右键单击项目标题,然后转到“属性”。将平台更改为“x64”
  8. 转到“C/C++” -> “常规” -> “附加包含目录”,并添加以下内容(不需要引号):“C:\opencv\build\include”。点击“应用”。
  9. 转到“链接器” -> “常规” -> “附加库目录”,并添加以下内容(不需要引号):“C:\opencv\build\x64\vc14\lib”。点击“应用”。
  10. 转到“链接器” -> “输入” -> “附加依赖项”,并添加以下内容(不需要引号):“opencv_world310.lib;opencv_world310d.lib;”。点击“应用”。
当您调试应用程序时,请使用“x64”模式。这适用于VS2015,希望这能帮到您。

10,以d结尾的文件不存在。

- KansaiRobot

1

由于我正在运行64位的Windows 10,Visual Studio Professional 2017,因此我按照以下步骤进行修复:

  1. 项目 > 属性 -> 更改平台为x64

  2. 项目属性 > C/C++ -> 常规 -> 附加包含目录 ->{DIR}{PATH}\opencv\opencv\build\include

  3. 项目属性 > C/C++ -> 所有选项 -> 附加包含目录 ->{DIR}{PATH}\opencv\opencv\build\include

  4. 项目属性 > 链接器 -> 输入 -> 附加依赖项 -> 编辑.. -> 输入 'opencv_world330d.lib' -> 确定 -> 确定


我没有第四个。只有一个没有最后的“d”。 - KansaiRobot

0
我在Qt中遇到了同样的问题。我的路径中有一个空格("D:\Program files\OpenCv_Build"),我不知道这可能导致错误。我重新在一个没有空格的新路径中安装了OpenCv("D:\OpenCv_Build"),这个错误就没有发生了!
在我的情况下,解决方法是在Qt的".pro"文件中转义空格,如下所示:
//使用$$quote函数转义空格和反斜杠 PATH_WITH_SPACES = $$quote(D:/program\ files/OpenCv_Build/)
//在项目变量或配置中设置路径 INCLUDEPATH += $$PATH_WITH_SPACES

0

这很有趣,但似乎 Visual Studio 找不到正确的头文件,只是因为 Opencv2 文件夹中没有 Opencv2 文件夹。也就是说,在阅读源代码时:

#include <opencv2/core/core.hpp>

并且按以下包含目录位置:

$(OPENCV_DIR)\build\include\opencv2

他会尝试找到一些东西。

$(OPENCV_DIR)\build\include\opencv2\opencv2\core\core.hpp

他永远找不到它,因为基础目录不匹配。

要解决这个问题,只需从include指令中删除基础目录(opencv2):

#include <core.hpp>

希望这能帮到你。


0

你需要更改项目 > 属性 -> 将平台更改为 x64,然后重新设置 bin、lib 和 include 文件夹。

完成上述步骤后,还需要将 "解决方案平台" 选项卡从 x86 更改为 x64。

完成以上步骤后,你就可以使用 OpenCV 了。


不,我不能。 - KansaiRobot

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接