如何解决头文件的这个问题?
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
不是编译器错误消息,而是链接器错误消息。意思是你没有在链接过程中的任何地方包含一些目标文件(或 heapSort
或 mergeSort
的实现)
正如对问题的评论所指出的,您应该提供一个 Minimal, complete and verifiable example,它缺少您使用的包含文件的内容,以及函数 heapSort()
和 mergeSort()
在这门学科上很难对你进行更多的评估。
要使用外部库不仅要在源文件中做适当的#include <library.h>
,还要在程序中加入其他单元的编译结果 通常,您已将库正确安装在您的系统中并使用链接器选项 -l<libraryName>
其中 <libraryName>
是库的名称来搜索您在代码中调用的函数的实现,或者实现这些功能的编译单元的已编译对象。尽管您没有提供有关您正在使用的库或程序的其他模块的信息,但无法为您的问题提供更多帮助。
我正在尝试将我包含在其他扩展名为“.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
不是编译器错误消息,而是链接器错误消息。意思是你没有在链接过程中的任何地方包含一些目标文件(或 heapSort
或 mergeSort
的实现)
正如对问题的评论所指出的,您应该提供一个 Minimal, complete and verifiable example,它缺少您使用的包含文件的内容,以及函数 heapSort()
和 mergeSort()
在这门学科上很难对你进行更多的评估。
要使用外部库不仅要在源文件中做适当的#include <library.h>
,还要在程序中加入其他单元的编译结果 通常,您已将库正确安装在您的系统中并使用链接器选项 -l<libraryName>
其中 <libraryName>
是库的名称来搜索您在代码中调用的函数的实现,或者实现这些功能的编译单元的已编译对象。尽管您没有提供有关您正在使用的库或程序的其他模块的信息,但无法为您的问题提供更多帮助。