… неопределенная ссылка на … collect2: ld вернул 1 статус выхода

У меня возникают некоторые ошибки при компиляции, и я не могу понять, почему... должен ли мой heapsort.h иметь экспортируемый тип?

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);
}

пирамидальная сортировка.ч:

#ifndef _HEAPSORT_H_INCLUDE_
#define _HEAPSORT_H_INCLUDE_

#include <stdio.h>
#include <stdlib.h>

void heapSort(int* keys, int numKeys);

#endif

когда я собираюсь скомпилировать свою клиентскую программу, я получаю эту ошибку при компиляции:

HeapClient.o: In function `main':
HeapClient.c:(.text.startup+0x1a3): undefined reference to `heapsort'"

person user38669    schedule 29.04.2014    source источник
comment
Кстати, если вы написали heapsort.h: (1) не используйте _ в начале и (2) не включайте эти два включения.   -  person kec    schedule 29.04.2014


Ответы (1)


C (и C++) чувствителен к регистру. Ваша функция называется heapSort. Ваш HeapClient.c, по-видимому, вызывает heapsort, поэтому компоновщик жалуется, что нигде не может найти функцию heapsort. Исправьте опечатку и ссылка должна быть.

person T.C.    schedule 29.04.2014