VSCode远程调试Linux服务器C++程序时头文件包含错误求助
解决VSCode远程调试Linux C++程序的头文件找不到问题
刚看到你的问题,我太懂这种明明配置了路径却还是报错的憋屈感了!其实你踩了一个很多新手都会掉的坑——c_cpp_properties.json只管VSCode的代码提示,不管实际编译!
问题根源
你在c_cpp_properties.json里加的includePath,只是给VSCode的IntelliSense功能用的,让编辑器能找到头文件给你补全代码、标记语法错误,但真正编译程序的时候,是看tasks.json里的编译参数配置的。你的构建任务里根本没告诉g++要去哪里找这些头文件,所以编译器自然报找不到的错。
动手修改tasks.json
直接在tasks.json的args数组里添加-I参数指定头文件搜索路径就行。比如你的头文件在${workspaceFolder}/codec/api/svc/,就加-I${workspaceFolder}/codec/api/svc/,如果还有其他依赖路径也一起加上。修改后的配置应该是这样:
{ "tasks": [ { "type": "cppbuild", "label": "C/C++: g++ build active file", "command": "/opt/rh/devtoolset-7/root/usr/bin/g++", "args": [ "-fdiagnostics-color=always", "-g", "${file}", // 新增头文件搜索路径 "-I${workspaceFolder}/codec/api/svc/", "-I${workspaceFolder}/codec/decoder/core/inc", "-o", "${fileDirname}/${fileBasenameNoExtension}" ], "options": { "cwd": "${workspaceFolder}" // 把这里改成工作区根目录,避免路径混乱 }, "problemMatcher": [ "$gcc" ], "group": { "kind": "build", "isDefault": true }, "detail": "compiler: /opt/rh/devtoolset-7/root/usr/bin/g++" } ], "version": "2.0.0" }
额外注意点
- 路径大小写:Linux系统是严格区分大小写的,确认你写的路径和实际文件路径完全一致,别因为大小写细节翻车。
- 当前目录头文件:如果头文件和你的cpp文件在同一目录,也可以加
-I${fileDirname}确保编译器能找到。 - 验证路径有效性:可以在服务器上用
ls ${workspaceFolder}/codec/api/svc/codec_def.h命令确认文件确实存在,避免路径写错。
改完之后保存,重新执行构建任务(Ctrl+Shift+B),再启动调试应该就没问题了!
内容的提问来源于stack exchange,提问作者stackdon'tknow
相关产品推荐
相关产品推荐

