如何解决头文件的这个问题?

How do I fix this problem with header files?

我正在尝试将我包含在其他扩展名为“.h”的文件中的一些信息调用到主文件中。我的问题是,当我尝试调用属于该文件的某些函数时,出现以下错误。 这是代码的一部分,可以让您了解发生在我身上的事情。 我已经用过 switch,我已经用过 include。但是当我想使用来自“heapsort.h”的信息时,我得到了这个:

menu.c:(text.+0xcc): undefined reference to heapSort
menu.c:(text.+0xcc): undefined reference to mergeSort
#include <stdio.h>
#include <stdbool.h>
#include "heapsort.h"
#include "mergesort.h"

void options()

{
    int op = 30; 
    int n;
    int array[5];
    int i;
    int cont;
    int size;

    while (op!=0)
    {
        printf("choose one buddy:\n")
        printf("1. heap sort\n");
        printf("2. merge sort.\n");
        printf("0. exit\n");
      
        scanf("%d", &op);

        switch (op)
        {
            case 1:
                printf("heap sort\n");
                heapSort(array, n);
                break;

            case 2:
                printf("merge sort\n");
                mergeSort(array, n);
                break;

            case 0:
                printf("byebye!");
                break;

            default:   
                printf("bad option dude\n");
                break;
        }
    }
}

错误信息

menu.c:(text.+0xcc): undefined reference to heapSort
menu.c:(text.+0xcc): undefined reference to mergeSort

不是编译器错误消息,而是链接器错误消息。意思是你没有在链接过程中的任何地方包含一些目标文件(或 heapSortmergeSort 的实现)

正如对问题的评论所指出的,您应该提供一个 Minimal, complete and verifiable example,它缺少您使用的包含文件的内容,以及函数 heapSort()mergeSort() 在这门学科上很难对你进行更多的评估。

要使用外部库不仅要在源文件中做适当的#include <library.h>,还要在程序中加入其他单元的编译结果 通常,您已将库正确安装在您的系统中并使用链接器选项 -l<libraryName> 其中 <libraryName> 是库的名称来搜索您在代码中调用的函数的实现,或者实现这些功能的编译单元的已编译对象。尽管您没有提供有关您正在使用的库或程序的其他模块的信息,但无法为您的问题提供更多帮助。