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 的錯誤。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM