undefined reference to "funktion"
-
Hallo Leute
Ich uebe fleissig das c++ und habe ein Problem. Beim compilieren aus Anjuta (Linux IDE) bekomme ich fuer meinen Quellcode diesen Fehler:
main.cc:18: undefined reference to 'quicksort(int*, int, int)'
ABER wenn ich an der Kommandozeile kompiliere dann geht alles fehlerfrei.
g++ main.cc quicksort.cc funktions.h -o qs
main:
#include <iostream> #include "funktions.h" using namespace std; int main() { cout << "bitte 10 Zahlen eingeben:" << endl; int array_1[10]; int i = 0; while(i<10) { cin>>array_1[i]; i++; } quicksort(array_1,0,9); for(int i=0; i<10; i++) { cout<<array_1[i]<<endl<<endl; } return 0; }
header:
void quicksort(int array[], int l, int r);
funktion
void quicksort(int a[], int l, int r) //a=Array, l=linker Rand, r=rechter Rand { if(r>l) //solange mehr als 1 Folgenelement existiert { int i=l-1, j=r, tmp; //Variableninitialisierung mit Folgenrändern for(;;) //Endlosschleife; bricht ab, wenn i>=j { while(a[++i]<a[r]); //inkrem., bis größeres Element gefunden wird while(a[--j]>a[r] && j>i); //dekrem., bis kleineres Element gefunden wird if(i>=j) break; //brich ab, wenn sich die Folgenzeiger treffen tmp=a[i]; a[i]=a[j]; a[j]=tmp; //tausche kleineres mit größerem Element } tmp=a[i]; a[i]=a[r]; a[r]=tmp; //tausche Trennelement quicksort(a, l, i-1); //rekursiver Aufruf für linke Teilfolge quicksort(a, i+1, r); //rekursiver Aufruf für rechte Teilfolge } }
was mache ich (der der compiler) da falsch?
-
Zum einen brauchst du beim Compilieren nur die Source-Dateien (nicht die Header angeben):
g++ main.cc quicksort.cc -o qs
Und bei der IDE mußt du dem Projekt beide Source-Dateien hinzufügen (du hast anscheinend nur die main.cc übersetzen und linken lassen).
-
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum Compiler- und IDE-Forum verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.