arrays in headerdateien
-
Hallo zusammen,
ich habe folgendes Problem.ich habe eine Variable, die in der headerdatei folgendermaßen definiert ist:
extern double caq[];
in einer Quelldatei weise ich dann diesem Array eine Größe zu:
double caq[2];
in einer anderen Quellcodedatei wird nun diese Variable cat benutzt. Die Headerdatei wird in beiden Quellcodes aufgerufen. Jedoch meldet sich der Fehler beim Linken:
GGW.obj : error LNK2001: unresolved external symbol "double * caq" (?caq@@3PANA)
Debug/gleichgewicht.exe : fatal error LNK1120: 1 unresolved externalKann mir jemand bitte sagen, was ich falsch mache?
Danke
-
Du musst die Quelldatei, in der das Array definiert ist, mitcompilieren bzw. beim Linken die entsprechende Binärdatei mitlinken.
-
AJ schrieb:
Du musst die Quelldatei, in der das Array definiert ist, mitcompilieren bzw. beim Linken die entsprechende Binärdatei mitlinken.
Das habe ich auch gemacht. Die Variable caq ist in der quellcodedatei definert wo auch das main programm drin ist. dann drücke ich auf die taste rebuild all. Dann werden doch automatisch alle quelldateien compiliert oder?
trotzdem erscheint der fehler. Kennt ihr vielleicht ein tutorial oder ein beispiel wo ich das nachschauen kann?
-
dieses 'caq@@3PANA' sieht verdächtig nach c++ name mangeling aus.
ein c++ compiler hängt noch typinformationen und ähnlichen unsinn mit dran.
hast du vielleicht einen mix aus C und c++ quellcodes?
-
ich bin ehrlich gesagt absolut kein c profi.
die dateien haben alle den anhang .cpp. Wenn ich sie einzeln kompiliere, kommt auch kein Fehler raus. Wenn ich sie linke entsteht dieser Fehler.
-
benenn' mal alle .cpp dateien in .c um.
vielleicht hilfts...
-
Vielleicht hilft es ja auch schon, wenn du bei der extern-Deklaration die Array-Größe mit angibst
-
Das Problem hab ich geklärt. Ich hatte die globale Variable in main definiert und nicht am Anfang in der Header-Datei.
Vielen Dank nochmals..