ld:未定义的符号:在C

问题描述 投票:0回答:1

这是我的 function.c 文件。

int max(int a, int b) {
    return a>b? a:b;
}

这是我的 head.h 文件。

#pragma once 
extern int max(int a,int b);

这是我的 main.c 文件。

#include <stdio.h>
#include "0703head.h"
 
int main() {
   printf("%d\n", max(10,20));
   return 0;
}

这就是问题所在。

ld: Undefined symbols:
  
_max, referenced from:

_main in 0701main-5801ea.o

clang: error: linker command failed with exit code 1 (use -v to see invocation)

我不知道如何处理这个错误。

c ld
1个回答
0
投票

您遇到的错误通常是由于链接问题造成的。编译 main.c 文件时,链接器似乎找不到 max 函数的定义。 确保您正在编译所有必要的文件并将其链接在一起。您需要编译 function.c 和 main.c,然后将它们链接在一起。 你需要

  • 将 function.c 编译为目标文件

    gcc -c 函数.c -o 函数.o

  • 将main.c编译成目标文件

    gcc -c main.c -o main.o

  • 链接目标文件以创建可执行文件

    gcc 函数.o main.o -o my_program

更换

gcc 

使用你的编译器命令

© www.soinside.com 2019 - 2024. All rights reserved.