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.


Anmelden zum Antworten