Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Linker-Fehler durch includes

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
08.02.2007, 19:22 Uhr
~Osiris86
Gast


Hi Leute,

ich glaub ich bin zu doof. Ich programmier jetzt an für sich schon ne ganze Weile und scheite an sowas....

Also ich hab insgesamt 6 Dateien (3 .cpp und 3 .h - Dateien).

Ich habe 2 Klassen erstellt wofür jeweils 2 .cpp und 2 .h Dateien draufgehen. Was in den anderen Dateien steht soll global.

main.cpp
main.h
class1.cpp
class1.h
class2.cpp
class2.h

So in etwa. Ich habe nun in der main.h eine globale Variable deklariert, auf welche ich in allen cpp's Zugriff darauf haben muss. Also habe ich die main.h sowohl in der main.cpp, als auch in der class1.cpp und der class2.cpp includiert. Da ich Objekte der 2 Klassen in der main.cpp erstellen muss hab ich in der main.cpp class1.h und class2.h inkludiert.

Dies führt beim Linken zu bereits definierten Objekten... Irgendwie sagt mir das auch die Logik. Die Frage ist wie mach ich es dann. Lass ich irgendeines dieser includes weg, komm ich nichtmal zum linken. Also was tun? Zum Besseren Verständnis hier wie die includes aussehen:

DATEI main.h

C++:
// Keinerlei includes

int g_iTestvariable;



DATEI main.cpp

C++:
// Grundlegende includes wie <stdio.h> usw
#include "main.h"
#include "class1.h"
#include "class2.h"

// weiterer Quellcode in welchem ich auch auf g_iTestvariable zugreife



DATEI class1.h bzw. class2.h

C++:
// keinerlei includes lediglich Klassendeklaration



DATEI class1.cpp bzw. class2.cpp

C++:
#include "main.h"
#include "class1.h"

// Weiterer Code in welchem ich auf g_iTestvariable zugreife



So ich hoffe das war jetzt halbwegs verständlich und ihr könnt mir evtl helfen. Fehler sieht folgendermaßen aus:

error LNK2005: "int g_iTestvariable" (?g_iTestvariable@@3HA) ist bereits in main.obj definiert



Vielen Dank schonmal im Voraus
Greez Osiris
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
08.02.2007, 19:40 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


Hi,
logisch, da die variable bei jedem einbinden von main.h neu definiert wird, machs so dann funktionierts wie gewünscht:


DATEI main.h

C++:
// Keinerlei includes

extern int g_iTestvariable;



DATEI main.cpp

C++:
// Grundlegende includes wie <stdio.h> usw
#include "main.h"
#include "class1.h"
#include "class2.h"

int g_iTextvariable;

// weiterer Quellcode in welchem ich auch auf g_iTestvariable zugreife


--
class God : public ChuckNorris { };

Dieser Post wurde am 08.02.2007 um 19:40 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
08.02.2007, 20:20 Uhr
~Osiris86
Gast


Tja... dummheit gehört halt bestraft

THX funktioniert bestens
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
08.02.2007, 20:20 Uhr
0xdeadbeef
Gott
(Operator)


Ich wär übrigens äußerst vorsichtig mit globalen Variablen, die schießen dir jede Threasicherheit zum Mond. In 99.99% aller Fälle ist sowas ein Designfehler.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: