2

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'"
T.C.
  • 133,968
  • 17
  • 288
  • 421
user38669
  • 49
  • 1
  • 1
  • 2
  • 3
    BTW, if you wrote heapsort.h: (1) Don't use _ at the beginning, and (2) don't include those two includes. – kec Apr 29 '14 at 18:58

1 Answers1

8

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.

T.C.
  • 133,968
  • 17
  • 288
  • 421