(操作系统和版本:Ubuntu 18.4,VS代码版本:Vscode 1.4,C / C ++扩展版本:0.26)
您好,我已经阅读了所有有关“ raise.c”的文章,但都没有解决我的问题,我只是编写了一个简单的OpenCV代码来捕获网络摄像头的帧。每次我运行代码时,它经常显示错误。错误消息是:
无法打开'raise.c':无法读取文件(错误:找不到文件(/build/glibc-OTsEL5/glibc-2.27/sysdeps/unix/sysv/linux/raise.c))。
launch.json是:
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "g++ build and debug active file",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}/${fileBasenameNoExtension}",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "g++ build active file",
"miDebuggerPath": "/usr/bin/gdb"
}
]
}
和tasks.json是:
{
"tasks": [
{
"type": "shell",
"label": "g++ build active file",
"command": "/usr/bin/g++",
"args": [
"-g",
"${file}",
"-o",
"${fileDirname}/${fileBasenameNoExtension}",
"`pkg-config",
"--libs",
"--cflags",
"opencv4`"
],
"options": {
"cwd": "/usr/bin"
}
}
],
"version": "2.0.0"
}
那么我该如何解决这个问题?有什么办法解决它。我是新手程序员。
第二个问题是每次我运行此代码时,我的网络摄像头都会冻结,并且必须使用“强制相当”的底部。为什么我的网络摄像头冻结?任何想法都欢迎。谢谢。 (我正在使用ubuntu,而我的IDE是Vscode)
答案 0 :(得分:1)
最后,我在工作3天后找到了解决方案。我将为下一代编写解决方案。没有必要在互联网上搜索,您什么都找不到:D 好的,如果您想解决问题,则需要再次重新安装OpenCV并关闭所有标志。这是一个错误。 我使用的标志是:
cmake -D BUILD_TIFF = ON -D WITH_CUDA = OFF -D ENABLE_AVX = OFF -D WITH_OPENGL =打开-D WITH_OPENCL =关闭-D WITH_IPP =关闭-D WITH_TBB =打开-D BUILD_TBB = ON -D WITH_EIGEN = OFF -D WITH_V4L = OFF -D WITH_VTK = OFF -D BUILD_TESTS = OFF -D BUILD_PERF_TESTS = OFF -D CMAKE_BUILD_TYPE = RELEASE -D CMAKE_INSTALL_PREFIX = / usr / local -D OPENCV_EXTRA_MODULES_PATH =。/ .. / opencv_contrib / modules ..
使用正确的路径填充OPENCV_EXTRA_MODULES_PATH和CMAKE_INSTALL_PREFIX = / usr / local! 就这样, 祝你好运。
答案 1 :(得分:1)
如果您不想每次都看到有关丢失文件的提示,您可以创建该目录并在那里放置一个空文件(根据我目前在此处看到的路径调整):
sudo mkdir -p /build/glibc-eX1tMB/glibc-2.31/sysdeps/unix/sysv/linux/
sudo touch /build/glibc-eX1tMB/glibc-2.31/sysdeps/unix/sysv/linux/raise.c
如果你想在调试时看到一些源代码,你可以把你正在使用的 glibc 版本的文件放在那里。在在线存储库中找到与错误路径中的版本对应的标签并从那里获取。你的版本是 glibc-2.27
,我的是 glibc-2.31
。我的在这里:https://github.com/bminor/glibc/blob/glibc-2.31/sysdeps/unix/sysv/linux/raise.c
所以我可以按如下方式抓取它:
pushd ~/temp
wget https://raw.githubusercontent.com/bminor/glibc/glibc-2.31/sysdeps/unix/sysv/linux/raise.c
sudo cp -a raise.c /build/glibc-eX1tMB/glibc-2.31/sysdeps/unix/sysv/linux/
可能有一种方法可以告诉 VSCode / gdb 从其他路径找到它,而不会弄乱您的根文件系统。请任何知道如何操作的人进行编辑。
答案 2 :(得分:0)
使用gdb调试器时可能会发生此错误。在这种情况下,您需要在编译命令中包含“ -g”标志。 (这解决了将我带到这里的错误)
您的编译命令可能类似于以下内容:
g++ -Wall -Werror -std=c++14 -g -O -o <executable> <fileName>
还要注意在launch.json中对我有用的程序路径:
"program": "${workspaceFolder}/<executable>"