首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在vscode上编译多个文件时出错

在vscode上编译多个文件时出错
EN

Stack Overflow用户
提问于 2022-03-31 14:50:07
回答 1查看 56关注 0票数 0

我是个初学者,我试着运行一个简单的项目,但是收到了

代码语言:javascript
运行
复制
o:main.c:(.text+0xde): undefined reference to `max'collect2.exe: error: ld returned 1 exit status.

我在网上搜索了几个小时,但还是失败了。我真的需要你的帮助。谢谢

我的项目:

  1. 我第一次尝试

我在网上搜索,实现了visual代码一次编译一个文件。因此,我修改我的tasks.json如下

代码语言:javascript
运行
复制
{
    "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"
}

但我还是收到了

代码语言:javascript
运行
复制
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

代码语言:javascript
运行
复制
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

代码语言:javascript
运行
复制
#include <stdio.h>
#include "sum.h"
 
int main()
{
    printf("%d\n", sum(8,3));
    // printf("1");
    return 0;
}

sum.c

代码语言:javascript
运行
复制
#include "sum.h"
 
int sum(int a, int b)
{
    return a + b;
}

sum.h

代码语言:javascript
运行
复制
int sum(int a, int b);

误差在这里输入图像描述

因此,我怀疑是否应该调整vscode的一些设置。

EN

回答 1

Stack Overflow用户

发布于 2022-03-31 15:08:19

当编译器找不到要引用的函数时,会发生未定义的引用错误。这通常是由于Makefile中缺少/不正确的论点所致。

我看到tasks.json的参数中有一个头文件,这是不必要的。

编辑:您没有将'-o‘作为main.o和sum.o的参数,您也将main.o作为main.o的必需文件,这是行不通的。

修正:

代码语言:javascript
运行
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71694684

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档