… undefined reference to … collect2: ld returned 1 exit status
38,170
C (and C++) is case sensitive. Your function is called heapSort
. Your HeapClient.c is apparently calling heapsort
, so the linker complains that it can't find a heapsort
function anywhere. Fix that typo and it should link.
Author by
user38669
Updated on August 28, 2022Comments
-
user38669 over 1 year
I'm having some errors when compiling and I can't figure out why...is my heapsort.h supposed to have an exported type?
heapsort.c
#include <stdio.h> // standard libraries already included in "list.h" #include <stdlib.h> #include "heap.h" #include "heapsort.h" void heapSort(int* keys, int numKeys){ heapHndl H = NULL; H = buildHeap(numKeys, keys, numKeys); for (int i = 1; i < numKeys; i++){ keys[i] = maxValue(H); deleteMax(H); } freeHeap(&H); }
heapsort.h:
#ifndef _HEAPSORT_H_INCLUDE_ #define _HEAPSORT_H_INCLUDE_ #include <stdio.h> #include <stdlib.h> void heapSort(int* keys, int numKeys); #endif
when I go to compile with my client program I get this error upon compilation:
HeapClient.o: In function `main': HeapClient.c:(.text.startup+0x1a3): undefined reference to `heapsort'"
-
kec almost 10 yearsBTW, if you wrote heapsort.h: (1) Don't use _ at the beginning, and (2) don't include those two includes.
-