Linker-Fehler



  • Hallo, ich bekomme immer folgende Fehlermeldung,wenn ich compiliere.
    [Linker Fehler] Unresolved external '_COMFrecNom' referenced from D:\EIGENE DATEIEN\PROGUEB\ADC.OBJ.

    Die Variable COMFrecNom (integer) ist in einer Datei deklariert(com.h), welche in coninv.h included ist, welche wiederrum in die Datei, die COMFrecNom benötigt(adc.c),included ist.

    Kann mir jemand helfen?



  • deklariere nie eine Variable im Header... aber Zeig mal deine Deklaration?

    -junix



  • junix schrieb:

    deklariere nie eine Variable im Header...

    Warum nicht, junix? Wo kann denn sonst eine globale Variable deklariert werden?

    Danke
    BCBuilder Anfänger



  • junix schrieb:

    deklariere nie eine Variable im Header...

    deklarieren ist OK - initialisieren nicht.



  • Weil das deklarieren und initialisieren der Variablen im Header zu Problemen während des Compile/Linkervorgangs führen kann.

    Nu zeig hald die Deklaration deiner Variablen im header. los.

    -junix



  • junix schrieb:

    Weil das deklarieren und initialisieren der Variablen im Header zu Problemen während des Compile/Linkervorgangs führen kann.

    Nu zeig hald die Deklaration deiner Variablen im header. los.

    -junix

    So sieht das ganze aus:
    datei: com.h
    #ifdef COM_FILE_CODE
    .
    .
    .
    UINT16 COMFrecNom;
    .
    .
    .
    #else UINT16 ComFrecNom;
    .
    .
    .

    UINT16 ist mit int definiert(typedefine int UINT16)

    datei: coninv.h
    #include "com.h"
    datei: adc.c
    #include "coninv.h"

    In der Datei adc.c wird dann eine Funktion definiert, die ComFrecNom benötigt.
    In adc.h ist ComFrecNom gar nicht deklariert. Wenn ich sie dort deklariere, erscheint die Fehlermeldung nicht mehr.Ich würde die Deklaration aber gerne da lassen, wo sie ist.

    File1.c ruft dann die Funktion auf, die ComFrecNom benötigt. Rufe ich in file1.c die Funktion nicht auf, dann erscheint die Fehlermeldung nicht.


Log in to reply