• linux下使用vscode调试C++解决cannot open source file 找不到头文件的错误


    使用 c_cpp_properties.json 配置包含文件/头文件 

    如果在 .vscode文件夹中没有 c_cpp_properties.json可以使用Ctrl+Shift+P输入并打开 C/C++: Edit Configurations (UI) 

    此时出现默认的 c_cpp_properties.json 文件。接下来在 "includePath" 中添加头文件的路径即可。

    不知道头文件具体路径在哪里?没关系。比如 opencv2/highgui.cpp 文件,使用Ubuntu文件搜索功能直接找到其在系统中的位置 /usr/local/include/opencv4/ 添加即可。

    当然首先你需要安装了opencv等依赖文件。

    参考:

    https://code.visualstudio.com/docs/cpp/config-linux

    ------------------------------------------------------分割线 -------------------------------------------------------------------------

    注意!以上的路径添加方法只能告诉vscode的intellisense头文件的位置,以用于代码补全等。但在编译时依然会出现 找不到头文件的错误。我们需要在task.json的编译命令中添加路径。

    预备知识:g++ 编译命令选项

    -Ldir

      制定编译的时候,搜索库的路径。比如你自己的库,可以用它制定目录,不然

      编译器将只在标准库的目录找。这个dir就是目录的名称。

    -Idir (大写i)

      在你是用#include"file"的时候,gcc/g++会先在当前目录查找你所制定的头文件,如果没有找到,他回到缺省的头文件目录找,如果使用-I制定了目录,他

      回先在你所制定的目录查找,然后再按常规的顺序去找.

      对于#include<file>,gcc/g++会到-I制定的目录查找,查找不到,然后将到系统的缺省的头文件目录查找

    -g 生成调试信息。GNU 调试器可利用该信息。

    -IDIRECTORY 指定额外的头文件搜索路径DIRECTORY。 (大写i)

    -LDIRECTORY 指定额外的函数库搜索路径DIRECTORY。

    https://blog.csdn.net/woshinia/article/details/11060797

    -L -l (小写L)选项的区别 https://stackoverflow.com/questions/519342/what-is-the-difference-between-i-and-l-in-makefile

    其他参考:

    https://github.com/Microsoft/vscode-cpptools/issues/1889

    https://stackoverflow.com/questions/61079599/includepath-in-c-cpp-properties-json-not-working-in-vscode-for-c

    task.json 如图,此时再debug,不会再出现找不到NvInfer.h 或者 opencv2/opencv.hpp 的错误。

  • 相关阅读:
    每周学算法/读英文/知识点心得分享 1.28
    ARTS 1.21
    ARTS 1.14
    ARTS 1.7
    ARTS 12.31
    ARTS 12.24
    Leetcode : Median of Two Sorted Arrays
    我是怎样改善遗留系统的
    《大话重构》免费送书活动开始啦
    我的新书终于要出来啦
  • 原文地址:https://www.cnblogs.com/mrlonely2018/p/14885211.html
Copyright © 2020-2023  润新知