在使用VSCODE進行C語言程序設計時,如果用到了頭文件聲明函數,.c
文件定義函數,在編譯時盡管已經引用了相應的頭文件,VSCODE文本編輯器也沒有報錯,但仍然無法編譯。
錯誤提示如下:
d:/ComputerHomework/2019_winter/main.c:10: undefined reference to `ReadPathTkFile'
這是由於VSCODE實際上是一個文本編輯器,不是一個IDE,它不會自動鏈接項目通過頭文件引用的.c
文件。要解決這個問題,就要告訴編譯器需要鏈接哪些文件。
解決方法
在當前路徑下的.vscode
文件夾中找到tasks.json
,找到"args"
屬性,在其中"-g"
后,"-o"
前加入"${fileDirname}\\YourcFileName.c"
,每組字符串以逗號分隔。YourcFileName.c
即項目中要參與編譯的文件名。
樣例如下(僅參考填寫格式,具體參數不相同正常)
{
"tasks": [
{
"type": "shell",
"label": "gcc.exe build active file",
"command": "C:\\mingw64\\bin\\gcc.exe",
"args": [
"-g",
"${file}",
"${fileDirname}\\IstkFile.c",
"${fileDirname}\\PrintQuestion.c",
"${fileDirname}\\MarkingSystemLib.c",
"${fileDirname}\\zqyLib.c",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe"
],
"options": {
"cwd": "C:\\mingw64\\bin"
}
}
],
"version": "2.0.0"
}
如果覺得一個個添加文件比較麻煩,可以使用MakeFile的方法。這里不做詳細介紹。
下面的鏈接是C++MakeFile模板:
C++MakeFile模板