我正在使用开发一个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
文件如下所示:
{
"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
文件显然存在于此:
$ ls /opt/sdk/sysroots/corei7-64-poky-linux/usr/include/opencv2/core | grep mat.hpp
mat.hpp
尽管如此,代码仍然没有捡到它。为什么会这样呢?要找到我的OpenCV头文件,还应该对代码进行哪些更改?
发布于 2019-11-27 08:42:32
很明显,这条冒犯的界线是:
"compileCommands": "${workspaceFolder}/build/compile_commands.json",
在移除它之后,它现在起作用了。我的c_cpp_properties.json
配置现在看起来如下:
{
"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
}
发布于 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
,这显然是行不通的。
https://stackoverflow.com/questions/58950686
复制相似问题