首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Visual代码在包含OpenCV时出现“无法打开源文件”错误

Visual代码在包含OpenCV时出现“无法打开源文件”错误
EN

Stack Overflow用户
提问于 2019-11-20 09:17:04
回答 2查看 11.4K关注 0票数 5

我正在使用开发一个C++项目,并且在一个自定义位置安装了OpenCV。但是,当我尝试包含来自OpenCV的头文件时,它会出现以下错误:

#包括检测到的错误。考虑更新您的compile_commands.json或includePath。此翻译单元(/home/.../dev/communication-module/modules/.../.../src/....cpp).禁用Squiggles。C/C++(1696)

无法打开源代码文件“opencv2 2/core/mat.hpp”C/C++(1696)

下面是相同错误的屏幕截图:

我的.vscode/c_cpp_properties.json文件如下所示:

代码语言:javascript
运行
复制
{
    "configurations": [
        {
            "name": "Linux",
            "includePath": [
                "/opt/sdk/sysroots/corei7-64-poky-linux/usr/include/opencv2",
                "/opt/sdk/sysroots/corei7-64-poky-linux/usr/include/opencv2/core",
                "${workspaceFolder}/**"
            ],
            "defines": [],
            "compilerPath": "/usr/bin/gcc",
            "cStandard": "c11",
            "cppStandard": "c++17",
            "intelliSenseMode": "clang-x64",
            "compileCommands": "${workspaceFolder}/build/compile_commands.json",
            "browse": {
                "path": [
                    "/opt/sdk/sysroots/corei7-64-poky-linux/usr/include/opencv2",
                    "/opt/sdk/sysroots/corei7-64-poky-linux/usr/include/opencv2/core",
                    "${workspaceFolder}"
                ],
                "limitSymbolsToIncludedHeaders": true,
                "databaseFilename": ""
            }
        }
    ],
    "version": 4
}

mat.hpp文件显然存在于此:

代码语言:javascript
运行
复制
$ ls /opt/sdk/sysroots/corei7-64-poky-linux/usr/include/opencv2/core | grep mat.hpp
mat.hpp

尽管如此,代码仍然没有捡到它。为什么会这样呢?要找到我的OpenCV头文件,还应该对代码进行哪些更改?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-11-27 08:42:32

很明显,这条冒犯的界线是:

代码语言:javascript
运行
复制
            "compileCommands": "${workspaceFolder}/build/compile_commands.json",

在移除它之后,它现在起作用了。我的c_cpp_properties.json配置现在看起来如下:

代码语言:javascript
运行
复制
{
    "configurations": [
        {
            "name": "Linux",
            "includePath": [
                "/opt/sdk/sysroots/corei7-64-poky-linux/usr/include",
                "${workspaceFolder}/**"
            ],
            "defines": [],
            "cStandard": "c11",
            "cppStandard": "c++17",
            "intelliSenseMode": "clang-x64"
        }
    ],
    "version": 4
}
票数 2
EN

Stack Overflow用户

发布于 2019-11-20 09:22:33

包含路径/opt/sdk/sysroots/corei7-64-poky-linux/usr/include/opencv2应该以/include结尾。

当您键入#include <opencv2/core/mat.hpp>时,编译器将搜索/opt/sdk/sysroots/corei7-64-poky-linux/usr/include/opencv2/opencv2/core/mat.hpp,这显然是行不通的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58950686

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档