Probleme mit Einbinden von Header-Dateien



  • Hallo !

    Ich habe da ein Programm, das mehrere selbstgeschriebene Funktionen (die in einer Header-Datei stehen) aufrufen soll.

    In dem Hauptprogramm inkludiere ich die Header-Datei. Die Header-Datei selbst enthält nur die Deklarationen (mit extern davor). In der gleichnamigen .c Datei stehen die Definitionen (ohne extern). Außerdem wird dort nochmal die Header-Datei inkludiert.

    Habe alles möglichst nach dieser Faq aus dem Forum gemacht.

    Beim kompilieren unter Linux mit gcc bekomme ich immer folgenden Fehler:

    /tmp/ccETVqtY.o: In function CRTSBS': /tmp/ccETVqtY.o(.text+0x59): undefined reference toopendat'
    /tmp/ccETVqtY.o(.text+0xa0): undefined reference to outdat' /tmp/ccETVqtY.o(.text+0x11f): undefined reference toindat'
    /tmp/ccETVqtY.o(.text+0x14b): undefined reference to `closedat'
    collect2: ld returned 1 exit status

    CRTSBS ist die Funktion in der die Aufrufe stehen, opendat, outdat, indat und closedat sind die Funktionen in der Headerdatei, die ich aufrufe.

    Vielleicht kann mir jemand weiterhelfen...

    Gruß,

    Ben



  • Hi

    Erstens wäre es hilfreich wenn du den Code Postest!

    Zweitens scheint es mir als hättest du entweder vergessen eine Source File anzugeben oder eine Library einzubinden!!

    cu

    eViLiSSiMo aka Evil2002 🕶



  • Hallo !

    Also, hier mal etwas von dem Code, habe mich auf eine der Funktionen beschränkt. Alle anderen Aufrufe sind ähnlich.

    Aus dem Hauptprogramm:

    #include <stdlib.h>
    #include <stdio.h>
    #include <string.h>
    #include "FileHandling.h"
    #include "Table.h"
    #include "Constants.h"
    
    void CRTSBS( char *SBSName, char *cpf )
    {
    
    //	...
    
       int fhandle;                                                         /* File-Handle für JobQueueTable */
    
       /* Datei öffnen */
       if ( (fhandle = opendat(JOB_QUEUE_FILE)) == -1 )
       {
       	printf ( "Fehler beim Öffnen der Datei\n" );
       	return;
       }
    
    //	...
    
    }
    

    ---------------------

    Aus der FileHandling.h":

    #ifndef FILEHANDLING
    #define FILEHANDLING
    #include <limits.h>
    #include <sys/types.h>
    #include <sys/stat.h>
    #include <fcntl.h>
    
    //	...
    
    /*Diese Funktion öffnet eine Datei                                   */
    extern int opendat(char* );
    
    //	...
    
    #endif
    

    ---------------------

    Aus der "FileHandling.c":

    #include <stdlib.h>
    #include <stdio.h>
    #include "FileHandling.h"
    
    //	...
    
    /*Diese Funktion öffnet eine Datei                                   */
    /* Parameter: 1. Dateiname                                           */
    /* Rückgabe:  -1=nicht erfolgreich, Ansonsten Dateihandle            */
    int opendat(char* x_FileName)
    {
    
    //	...
    
    }
    

    Vielleicht hilft das weiter...bin mit meinem Latein am Ende...

    Gruß,

    Ben



  • Ok, hat sich erledigt...

    Problem war, daß ich kein makefile hatte. Unter Windows mit VC++ hatte ich das nie gebraucht *g*...

    Gruß,

    Ben


Anmelden zum Antworten