Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

BladeGool

Frischling

  • »BladeGool« ist der Autor dieses Themas

Beiträge: 25

Wohnort: München/Eurasburg

  • Private Nachricht senden

1

25.12.2003, 23:59

"Beriets definiert " Problem

Also ,
ich hab das gleiche #include Structuremuster wie in der Tribase.dsw also in den .cpp Dateien Tribase.h des dann wieder alles andere #includet aber wenn ich eine Variable oder Funktion in einer Header Datei hab is die sofort "Bereits definiert" in einer anderen Header Datei.Includet muss ich ja eigentlich alles richtig haben aber warum ist dann jede Funktion und Variable
bereits definiert ?

danke
Meine Homepage:


DragonIllusion

Patrick

Alter Hase

Beiträge: 1 264

Wohnort: Düren

Beruf: Fachinformatiker für Anwendungsentwicklung

  • Private Nachricht senden

2

26.12.2003, 01:20

ich glaub bei der TriBase hat david die include guards rausgelassen und pragma benutzt.

versuchs doch mal mit includeguards! hier ein beispiel:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
// Datei:           CFont.h
// //////////////////////////////////////////////////////////////////////////////////
// Autor:           Patrick Ullmann                             © Xarent Interactive
// Erstellt:        22.12.03
// Änderungen:     22.12.03    (Patrick)   Datei erstellt
// //////////////////////////////////////////////////////////////////////////////////
// Beschreibung:    Fontklasse

#ifndef _CFONT_H_
#define _CFONT_H_

// I N C L U D E S //////////////////////////////////////////////////////////////////
#include "..\\core\\CTextureManager.h"
#include "..\\core\\CVideo.h"

// D E F I N I T I O N E N //////////////////////////////////////////////////////////
    // Noch keine

// S T R U K T U R E N //////////////////////////////////////////////////////////////
class CFont
{
public:
    CFont   (void);
    ~CFont  (void);

    void    init            (std::string BitmapFileName, std::string InfoFileName);

    void    renderString    (int x, int y, char *text);
    void    renderString    (int x, int y, char *text, SDL_Surface *dest);

    int     getStringWidth  (char* Text);

    void    inputString     (int x, int y, int width, char* charBuffer, SDL_Surface *dest);

private:
    SDL_Surface     *m_BitmapFile;
    int             m_charPos[512];
    int             m_h;

    bool            m_usingInfo;
};

#endif

BladeGool

Frischling

  • »BladeGool« ist der Autor dieses Themas

Beiträge: 25

Wohnort: München/Eurasburg

  • Private Nachricht senden

3

26.12.2003, 10:32

Ich weiß nicht was includguards sind , wo sind die im Code ???
Was bedeuted des #endif am Ende ?
Meine Homepage:


DragonIllusion

Patrick

Alter Hase

Beiträge: 1 264

Wohnort: Düren

Beruf: Fachinformatiker für Anwendungsentwicklung

  • Private Nachricht senden

4

26.12.2003, 11:00

hier einfaches beispiel:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// Include guard beginnt hier
#ifndef _MEIN_HEADER_NAME_H_   // Ist das #define schon gesetzt? Wenn nein neu setzen
#define _MEIN_HEADER_NAME_H_   // das #define setzen



// includes
#include<blabla>

// werte
wchar_t wert = blabla;

// funktionen
bool funktion (blabla);




#endif // #ifndef abschließen (include guard endet hier.)


die include guard ist eine präprozessor anweisung (ich hoff du weist was das ist :) ansonsten in dienem C++ Buch nachlesen!)

zuerst wird abgefragt ob die headerdatei schon irgendwo eingebunden ist (#ifndef), wenn ja wird die headerdatei nicht includiert und der code in ihr bis zum #endif übersprungen.

Ist sie jedoch noch nicht irgendwo eingebunden wird sie definiert per #define und includiert :)

Simpelstes verfahren :)

edit:
achja bevor ichs vergesse: Include Guards NUR in Header dateien benutzen und den code zwischen den include guards einbauen, sonst funktioniert es nicht.

eine include guard kannste mit #undef aufheben.

BladeGool

Frischling

  • »BladeGool« ist der Autor dieses Themas

Beiträge: 25

Wohnort: München/Eurasburg

  • Private Nachricht senden

5

26.12.2003, 11:04

Ok ich kanns aber erst in 1 1/2 Wochen ausprobieren trotzdem schon mal danke
Meine Homepage:


DragonIllusion

BladeGool

Frischling

  • »BladeGool« ist der Autor dieses Themas

Beiträge: 25

Wohnort: München/Eurasburg

  • Private Nachricht senden

6

05.01.2004, 15:20

Irgendwie funktioniert des nicht ???

Des kommt Fenster


Linker-Vorgang läuft...

Communication.obj : error LNK2005: "struct HWND__ * __cdecl CreateMainWindow(struct HINSTANCE__ *,int,int,int,int)" (?CreateMainWindow@@YAPAUHWND__@@PAUHINSTANCE__@@HHHH@Z) bereits in ButtonHandler.obj definiert
Communication.obj : error LNK2005: "enum flResult __cdecl InitDirect3dUndCo(int)" (?InitDirect3dUndCo@@YA?AW4flResult@@H@Z) bereits in ButtonHandler.obj definiert
Communication.obj : error LNK2005: "void __cdecl wait(unsigned long)" (?wait@@YAXK@Z) bereits in ButtonHandler.obj definiert
Communication.obj : error LNK2005: "void __cdecl Error(char const *,bool)" (?Error@@YAXPBD_N@Z) bereits in ButtonHandler.obj definiert
Communication.obj : error LNK2005: "enum flResult __cdecl AlleszumAnfangen(struct HINSTANCE__ *,int,int,int,int,bool)" (?AlleszumAnfangen@@YA?AW4flResult@@PAUHINSTANCE__@@HHHH_N@Z) bereits in ButtonHandler.obj definiert
Communication.obj : error LNK2005: "void __cdecl UpdateZ(void)" (?UpdateZ@@YAXXZ) bereits in ButtonHandler.obj definiert
Communication.obj : error LNK2005: "void __cdecl GetVideoModi(void)" (?GetVideoModi@@YAXXZ) bereits in ButtonHandler.obj definiert
Communication.obj : error LNK2005: "int __cdecl charint(char const *)" (?charint@@YAHPBD@Z) bereits in ButtonHandler.obj definiert
Communication.obj : error LNK2005: "char * __cdecl Doublechar(double,int)" (?Doublechar@@YAPADNH@Z) bereits in ButtonHandler.obj definiert
Communication.obj : error LNK2005: "long __stdcall WindowProc(struct HWND__ *,unsigned int,unsigned int,long)" (?WindowProc@@YGJPAUHWND__@@IIJ@Z) bereits in ButtonHandler.obj definiert
Communication.obj : error LNK2005: "void __cdecl Spielschleife(void)" (?Spielschleife@@YAXXZ) bereits in ButtonHandler.obj definiert
Communication.obj : error LNK2005: "void __cdecl Clearr(void)" (?Clearr@@YAXXZ) bereits in ButtonHandler.obj definiert
Communication.obj : error LNK2005: "enum flResult __cdecl ErstelleProtokoll(void)" (?ErstelleProtokoll@@YA?AW4flResult@@XZ) bereits in ButtonHandler.obj definiert
Communication.obj : error LNK2005: "struct IDirect3DSurface9 * BackBuffer" (?BackBuffer@@3PAUIDirect3DSurface9@@A) bereits in ButtonHandler.obj definiert
Communication.obj : error LNK2005: "struct IDirect3DSurface9 * nD3D_SURFACE" (?nD3D_SURFACE@@3PAUIDirect3DSurface9@@A) bereits in ButtonHandler.obj definiert
Communication.obj : error LNK2005: "unsigned long m_ClearColor" (?m_ClearColor@@3KA) bereits in ButtonHandler.obj definiert
Communication.obj : error LNK2005: "struct tagMSG msg" (?msg@@3UtagMSG@@A) bereits in ButtonHandler.obj definiert
DrawText.obj : error LNK2005: "struct HWND__ * __cdecl CreateMainWindow(struct HINSTANCE__ *,int,int,int,int)" (?CreateMainWindow@@YAPAUHWND__@@PAUHINSTANCE__@@HHHH@Z) bereits in ButtonHandler.obj definiert
DrawText.obj : error LNK2005: "enum flResult __cdecl InitDirect3dUndCo(int)" (?InitDirect3dUndCo@@YA?AW4flResult@@H@Z) bereits in ButtonHandler.obj definiert
DrawText.obj : error LNK2005: "void __cdecl wait(unsigned long)" (?wait@@YAXK@Z) bereits in ButtonHandler.obj definiert
DrawText.obj : error LNK2005: "void __cdecl Error(char const *,bool)" (?Error@@YAXPBD_N@Z) bereits in ButtonHandler.obj definiert
DrawText.obj : error LNK2005: "enum flResult __cdecl AlleszumAnfangen(struct HINSTANCE__ *,int,int,int,int,bool)" (?AlleszumAnfangen@@YA?AW4flResult@@PAUHINSTANCE__@@HHHH_N@Z) bereits in ButtonHandler.obj definiert
DrawText.obj : error LNK2005: "void __cdecl UpdateZ(void)" (?UpdateZ@@YAXXZ) bereits in ButtonHandler.obj definiert


und so gehts weiter :(
Meine Homepage:


DragonIllusion

Werbeanzeige