VSCode使用過程中遇到的一些坑

最近在使用VSCode編譯C++,其中遇到了一些坑,便在此做一些解決的記錄。我使用的編譯器是MinGw。

坑1:按下F5運行時提示如下:

文字版提示爲:

Unable to start debugging. Program path '***.exe' ismissing or invalid.
GDB failed with message: "***.exe": not inexecutable format: File format not recognized
This may occur if the process's executable was changed after the process wasstarted, such as when installing an update. Try re-launching the application orrestarting the machine.

這個錯誤我百度了好多資料,均沒有找到相關信息。後來看了下這個項目下./vecode/task.json。發現了這麼一句:

上面那一行註釋是我自己寫的,下面這個紅框的內容是配置項自己生成的,幺蛾子就是出在了這兒。

把紅框的內容替換爲上面那一行即可,但是要注意路徑問題,不同的機器的配置路徑可能不一致

 

坑2:

文字版描述爲:

launch: program '*****\.vscode\launch.exe' does not exist

出現這個問題的原因是誤把launch.json當成C++編譯了,VSCode貌似默認編譯的是當前活動標籤,只需把活動標籤切到目標CPP即可。驗證如下:

 

坑3:使用LeetCode插件時,代碼在VSCode中各種標紅,(多一句廢話:這個題解代碼我是抄的別人的)如下:

這個可能並不是很嚴重,只是針對於有強迫症的人羣(比如我自己)。有的在本地VSCode中標紅,提交的時候卻能通過編譯。問題在於少了這兩行代碼:

#include<bits/stdc++.h>
using namespace std;

如下問題解決了:

補充於2020年6月15,坑4:VSCode不支持C++11,百度上所有的方法都試過沒啥用。

我換了電腦遇到了這個坑,怎麼用百度的解決方法都不對,我重裝了一次,結果還是沒啥用。然後懷疑是.vscode文件夾下那兩個json的問題,於是我把之前的json文件全部刪除了,再次編譯時選擇了下圖的第一個,然後按照網上的教程在arg參數里加了個"-std=c++11",即可成功支持c++11了(注意是兩個json文件:launch.json文件個和ask.json文件裏對應的arg參數都要添加,網上有的說只在launch.json中添加,我親測了下,好像不行,編譯報錯)。之前可能是選擇了下圖的Windows那個選項,無論如何在個json文件的arg參數中添加"-std=c++11"都不好使。

我自己成功的配置如下:

可即使這樣,我能編譯源文件生成exe文件,他丫的還是有坑。我的代碼用到的函數如果沒有前置聲明,編譯終端還是報錯(是的,即使exe都生成了還是報編譯錯誤)真是醉了,我也不知道爲啥。

坑五:VSCode項目下就只有個launch.json文件,沒有task.json文件。

這個是由於在配置項目時候,只是點了一次生成和調試活動文件。我自己測試得出的結論是:第一個生成的 是launch.json文件,第三個生成的是task.json 文件。我的生成和調試活動文件點擊後界面如下:

我針對的都是g++的編譯器而言的,由於cpp.exe的相關配置沒有試過,不敢妄談。有時候只有個launch.json文件程序也能編譯運行,但有時候就不行。例如,2020.7.1之前我就只有個launch.json文件就能編譯運行,但是自從那天上午更新了之後,就不行了。尤其是涉及到c++11標準的一些東西,更新後編譯各種報錯(在命令行手動編譯倒是能通過編譯生成exe文件,但是這手動輸入哪有一鍵生成香啊)。後來自己就測試了下上圖中的第一個g++和第三個g++,然後得出了選項和文件之間的對應關係。

注意,有的朋友可能已經生成了一個launch.json後就找不到打開上圖的界面從而無法生成task.json文件,編譯又報錯(起初我也是這樣),這時候你隨便新建一個cpp文件,然後打開,單擊鼠標右鍵,就會出現下圖的提示,點進去就能找到對應的選項。

需要支持c++11的參照網上的方法:在task.json下添加“-std=c++11”,但是,注意不要分割了下圖框起來的這兩行,否則又生成不了exe文件。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章