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模板