我是个初学者,我试着运行一个简单的项目,但是收到了
o:main.c:(.text+0xde): undefined reference to `max'collect2.exe: error: ld returned 1 exit status.
我在网上搜索了几个小时,但还是失败了。我真的需要你的帮助。谢谢
我的项目:
我在网上搜索,实现了visual代码一次编译一个文件。因此,我修改我的tasks.json如下
{
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: gcc.exe 生成活动文件",
"command": "C:\\TDM-GCC-64\\bin\\gcc.exe",
"args": [
"-fdiagnostics-color=always",
"-g",
"${file}",
//I modify the following sentences as
"${fileDirname}\\function.c",
"${fileDirname}\\main.c",
"${fileDirname}\\main.h",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe"
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "调试器生成的任务。"
}
],
"version": "2.0.0"
}
但我还是收到了
C:/TDM-GCC-64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\DELL\AppData\Local\Temp\ccZp5xjY.o:main.c:(.text+0xde): undefined reference to `max'
collect2.exe: error: ld returned 1 exit status
顺便说一句,我的项目:
2.我第二次尝试使用MakeFile,但仍然是相同的错误(另一个项目,但也是一个简单的) MakeFile
sum : main.o sum.o
gcc main.o sum.o -o sum
main.o : main.o sum.h
gcc -c main.c
sum.o : sum.c sum.h
gcc -c sum.c
main.c
#include <stdio.h>
#include "sum.h"
int main()
{
printf("%d\n", sum(8,3));
// printf("1");
return 0;
}
sum.c
#include "sum.h"
int sum(int a, int b)
{
return a + b;
}
sum.h
int sum(int a, int b);
因此,我怀疑是否应该调整vscode的一些设置。
发布于 2022-03-31 15:08:19
当编译器找不到要引用的函数时,会发生未定义的引用错误。这通常是由于Makefile中缺少/不正确的论点所致。
我看到tasks.json
的参数中有一个头文件,这是不必要的。
编辑:您没有将'-o‘作为main.o和sum.o的参数,您也将main.o作为main.o的必需文件,这是行不通的。
修正:
sum: main.o sum.o
gcc -o sum main.o sum.o
main.o: main.c
gcc -o main.o -c main.c
sum.o: sum.c
gcc -o sum.o -c sum.c
https://stackoverflow.com/questions/71694684
复制相似问题