Hallo Ich versuche gerade eine Globale Variable zu Deklarieren die in mehreren .c Dateien verwendet werden soll. In der main.c habe steht folgende Initialisierung volatile unsigned int A=0; Im Header: (application.h) extern volatile unsigned int A; In der Klasse wird der Header includiert: #include<Application.h> Beim Linken bekomme ich die Fehlermeldungen: Unresolved external Symbol Reference made to unresolved external Symbol Woran kann das ligen? Das Programm läuft auf einem 80C164CI. Programmiert wird mit uVision4. Gruss Matze.
Das könnte ein Problem sein, da das A in der main nicht das gleiche A wie aus der .h ist. Wenns das gleiche sein soll, in der main nur A = 0; zuweisen. Ohne Typ, ohne volatile davor.
Nachtrag: Weiteres Problem könnte #include<Application.h> sein. Hier mal #include "Application.h" verwenden, da er bei < > nur im Verzeichnis vom Compiler sucht.
Bei Initialisierung ohne Datentyp und Volatile verändet sich nichts an den Fehlern. Auch (#include "Application.h") bewirkt keine Veränderung.
Erst mal solltest du nicht in der Application.h und in den .c Dateien,
welche diese Datei benutzen (include), die Includes doppelt aufführen.
Wenn du die Includes in der Application.h drin hast, dann bekommen diese
auch die .c Datei, welche diese benutzt. Oder du machst die Includes
immer nur in den .c Dateien und nicht in den .h Dateien. Dies ist mir
bei der Application.c aufgefallen, welche ebenfalls noch mal sämtliche
Include Direktiven beinhaltet.
Die Syntax mit #include <..> ist beim Keil Compiler korrekt und er sucht
alle Header Dateien die sich im gleichen Verzeichnis wie die .C Dateien
befinden.
Und das beim Compilieren die Variable "A" nicht gefunden wird ist auch
ganz einfach zu erklären. Du hast per "extern" Befehl in der
Application.h zwar diese Variable dateiübergreifend bekannt gemacht,
aber mehr auch nicht. Du musst diese Variable vorher erst mal
deklarieren in einer .c Datei mit "volatile unsigned int A;" da
ansonsten diese Variable überhaupt nicht existiert. Zumindest in deinem
Beispielcode kann ich nirgendwo diese Deklaration der Variable finden.
Ciao,
Rainer
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.