undefined reference + total dringend



  • Hallo,

    ich schreibe gerade ein CPP-Programm. Mein Chef sagt, ich soll nicht auf die vorhanden libs zurückgreifen. Ich soll sie mir selbst schreiben. So. Darum hab ich mir eine strcompare-Funktion geschrieben:

    #include "length.h"
    
    //Vergleicht, ob im Speicher ein Datensatz ist, der auf Searchname passt
    
    int strcompare2(char *str1, char *str2)
    {
    	int i=0;
    	int str1length=0;
    	int str2length=0;
    
    	str1length=strlength(str1);
    	str2length=strlength(str2);
    
    	if(str1length!=str2length)
    	{
    		return(0);
    	}
    	else
    	{
    		for(i=0; i<str1length; i++)
    		{
    			if(*(str1+i)!=*(str2+i))
    			{
    				return(0);
    			}
    		}
    		return(1);
    	}
    	return(1);
    }
    

    So...wenn str1 str2 entspricht bekomme ich ne 1 zurück. Ansonsten ne 0. Das ist nicht das Problem. Ich habe die Headerdatei in nem Programm eingebunden und rufe diese Funktion mit:

    char txt[15];
    char* getSurname()
    {
     return surname;
    }
    
    if(strcompare2(txt,ad->getSurname())
    {
    }
    

    auf. Beim compilieren krieg ich die Fehlermeldung:

    /tmp/ccu0Au9t.o(.text+0xb1f): In function `search_address(Address*)':
    : undefined reference to `strcompare2(char*, char*)'
    collect2: ld returned 1 exit status
    

    Ich hab keine Ahnung warum diese Meldung kommt. müsste doch funktionieren?! das problem ist, ich brauch ganz dringend hilfe in der sache.

    hoffe jemand weiß woran das liegt.

    cppnaggi

    P.S.: ich hab die Headerdatei auf jeden fall richtig eingebunden.



  • das sieht aber eher nach nen linker fehler aus....

    Der Compiler scheint da schon länger drüber zu sein, will also heißen dort liegt nicht das problem. Ansonsten hätte halt der Compiler gemeckert. Hmmm wenn der header nicht eingebunden wäre würde halt der compiler meckern. Eigentlich ist das ein typischer Fehler wenn ein Funktion deklariert aber nicht definiert wurde. Hast du mal geschaut ob sich bei strcompare irgendwo noch ein ; verirrt hat was da nicht hingehört....? Manchmal sind so kleine Fehler die die einen wirklich das genick brechen.



  • hallo,

    danke für deine antwort.

    habe ich überprüft. ist nicht der fall. ich kann das nicht nachvollziehen. muss es aber heute noch lösen.

    hast du oder sonst noch jemand ne idee?!

    cppnaggi



  • ich weiss nicht fällt mir nur gerade auf

    if(strcompare2(txt,ad->getSurname()) <--- fehlt da nicht ein )
    {
    }

    lg



  • oh, stimmt. aber das ist nur ein fehler vom reinkopieren. im source stimmen die klammern alle.

    hat denn sonst keine ne idee?

    Edit:

    Wenn ich die Funktion direkt in die Datei schreibe (ohne Headerdatei) dann funktioniert alles bestens.



  • Hallo

    Die Datei mit der Implementation des strcompare2 muß nicht nur included werden, sondern auch compiliert werden. In einer IDE muß dazu die entsprechenden Dateien in das Projekt eingefügt werden, beim Konsolen-Kompilieren muß die Datei mit in den Kompileraufruf. Wie genau das zu machen ist, ist von deiner IDE/Compiler abhängig.

    bis bald
    akari



  • Wie genau das zu machen ist, ist von deiner IDE/Compiler abhängig

    Falls du es nicht weist, wie du es machen sollst: Welche IDE benutzt du ?



  • @akari & mikey

    Ich hab den Wald vor lauter Bäumen nicht mehr gesehen. Ich hab tatsächlich vergessen die compare2.c mizukompilieren. Danke und sorry.

    Danke für die Hilfe

    cppnaggi

    P.S.: IDE? Was ist das? Ich darf sowas nicht benutzen --> Linuxkonsolenprogrammierung 🙄



  • P.S.: IDE? Was ist das? Ich darf sowas nicht benutzen --> Linuxkonsolenprogrammierung

    Hää ? Verstehe ich nicht. Für Linux gibt es doch auch IDE's ! Oder _darfst_ du das generell aus irgendeinem Grund nicht benutzen ?



  • mikey schrieb:

    P.S.: IDE? Was ist das? Ich darf sowas nicht benutzen --> Linuxkonsolenprogrammierung

    Hää ? Verstehe ich nicht. Für Linux gibt es doch auch IDE's ! Oder _darfst_ du das generell aus irgendeinem Grund nicht benutzen ?

    Er darf es nicht benutzen, damit er lernt wie man es von Hand macht ⚠



  • lolz schrieb:

    mikey schrieb:

    P.S.: IDE? Was ist das? Ich darf sowas nicht benutzen --> Linuxkonsolenprogrammierung

    Hää ? Verstehe ich nicht. Für Linux gibt es doch auch IDE's ! Oder _darfst_ du das generell aus irgendeinem Grund nicht benutzen ?

    Er darf es nicht benutzen, damit er lernt wie man es von Hand macht ⚠

    Genau so ist es. Zuerst durfte ich ein Adress in C schreiben mit Strukturen. Jetzt durfte ich das Adressbuch in CPP schreiben (mit ner Klasse). Und demnächst darf ich es in Java schreiben.

    Aber wenn es läuft, find ich es Klasse.

    naja 😉


Anmelden zum Antworten