VSCODE編譯頭文件時函數沒有定義的解決方案(VSCODE手動鏈接C文件方法)


在使用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模板


免責聲明!

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



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