JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=cdd21e06b8aa00a8346571183bd61293Medaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

mehrfach definierte Symbole gefunden

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Fragen, Antworten und Kritik
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Blubb-Tec
JLI'ler


Alter: 33
Anmeldedatum: 29.03.2005
Beiträge: 171
Wohnort: Düsseldorf
Medaillen: Keine

BeitragVerfasst am: 17.08.2005, 13:03    Titel: mehrfach definierte Symbole gefunden Antworten mit Zitat



die global.h inkludiert nur so sachen wie <iostream>,<windows.h>,usw...
alle meine header besitzen IncludeGuards, kein #pragma once,
sonder #define-'strukturen'

hat jemand eine Idee??
_________________
www.planlos.de
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
The Lord of Programming
Living Legend


Alter: 37
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 17.08.2005, 13:21    Titel: Antworten mit Zitat

Hmm...ich kann gerade keinen Fehler entdecken.
Vielleicht liegts ja gar nicht an der Einbindungsstruktur. Hast du vielleicht irgendwas in main.cpp/global.h/reader.h doppelt? Anders kann ich mir das gerade nicht erklären o_o
_________________
www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console


Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Blubb-Tec
JLI'ler


Alter: 33
Anmeldedatum: 29.03.2005
Beiträge: 171
Wohnort: Düsseldorf
Medaillen: Keine

BeitragVerfasst am: 17.08.2005, 13:31    Titel: Antworten mit Zitat

hab nix doppeltes gefunden, das geht aber, wenn ich die operatoren in einer header-datei, und nich in einer .cpp-datei definiere, oder?
_________________
www.planlos.de
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
DirectXer
Dark JLI'ler



Anmeldedatum: 05.02.2005
Beiträge: 1201
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 17.08.2005, 13:46    Titel: Antworten mit Zitat

alle .obj(oder nur die betreffenden, meinungssache), einfach den ganzen debug/release-Ordner löschen und dann im code Erstellen Arrow Alles neu erstellen...

Fehler noch da Question

Gruß DirectXer
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
xardias
JLI Master


Alter: 38
Anmeldedatum: 28.12.2003
Beiträge: 804
Wohnort: Palo Alto, CA
Medaillen: Keine

BeitragVerfasst am: 17.08.2005, 14:20    Titel: Antworten mit Zitat

also ich weiß nicht wie das mit operatoren läuft. aber funktionen musst du im header als extern deklarieren. und dann in einer beliebigen cpp datei EIN MAL definieren.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Blubb-Tec
JLI'ler


Alter: 33
Anmeldedatum: 29.03.2005
Beiträge: 171
Wohnort: Düsseldorf
Medaillen: Keine

BeitragVerfasst am: 17.08.2005, 14:28    Titel: Antworten mit Zitat

also das mit den funktionen funzt meines wissens nach auch ohne EXTERN, und das mit alle .obj dateien löschen, + alles neu erstellen hat leider net gefunzt...

P.S: JUHU! es funktioniert!!

musste nur die in reader.h definierten operatoren folgendermaßen implementieren:

CPP:
class test
{
private:
    int i;

public:
     friend ostream& operator << (ostream& os, test& ctest);
};

ostream& operator << (ostream& os, test& ctest)
{
     cout << test.i;
     return os;
}

_________________
www.planlos.de
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
AFE-GmdG
JLI MVP
JLI MVP


Alter: 45
Anmeldedatum: 19.07.2002
Beiträge: 1374
Wohnort: Irgendwo im Universum...
Medaillen: Keine

BeitragVerfasst am: 17.08.2005, 15:26    Titel: Antworten mit Zitat

Doppelt definierte Symboile treten dann auf, wenn mehr als ein Prototyp exisitert. Beispiel: In einem Header hast du zu stehen:
Code:
// Includeguard - wie auch immer
int i;
Wenn dieser Header von mehreren C- oder H-Dateien eingebunden wird, passiert nix, da i nur ein Prototyp ist. i kann in einer C-Datei einen Wert zugewiesen bekommen. - Kein Problem...
Ist aber:
Code:
int i=0;
im Header enthalten, ist das ganze eine Variable, und kein Prototyp mehr.
Jetzt wird beim Kompilieren das Symbol i in jeder Objekt-Datei erstellt, die diesen Header benutzt. Und der Linker bemerkt dann das doppelte Symbol und meckert rum.
Mit EXTERN kann man diese Warnung zwar umgehen - dann weiss der Linker "Hey, das soll wohl das gleiche Symbol sein" - aber das gehört eigentlich verboten - Große Fehlerquelle!

HTH AFE-GmdG
_________________
CPP:
float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;}
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Blubb-Tec
JLI'ler


Alter: 33
Anmeldedatum: 29.03.2005
Beiträge: 171
Wohnort: Düsseldorf
Medaillen: Keine

BeitragVerfasst am: 17.08.2005, 15:38    Titel: Antworten mit Zitat

gut das zu wissen Wink
_________________
www.planlos.de
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Fragen, Antworten und Kritik Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum