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

denjo

Treue Seele

  • »denjo« ist der Autor dieses Themas

Beiträge: 163

Wohnort: BLB

  • Private Nachricht senden

1

25.11.2006, 12:17

Frage zu einer Menüprogrammierung für das SDL Spiel

Hallo,

ich habe versucht ein Menü für das SDL Spiel zu programmieren, jedoch
hat der Compiler nach der Fertigstellung einige Fehermeldungen angezeigt, die ich mir nicht erklären kann und jetzt nicht mehr weiter weiß.

Ich würd mich sehr freuen, wenn sich jemand meinen Quelltext und die Fehlermeldungen einmal anschauen könnte :o
und danach mir vielleicht erklären könnte wo die Fehler liegen.
Ich weiß dass das viel Arbeit ist und bedanke mich jetzt schon mal für die Arbeit, die sich derjenige macht der sich den Quelltext anschaut!!!
Ich hoffe er ist leicht zu Lesen.

Hier der Quelltext:

C-/C++-Quelltext

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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
#include "Menu.hpp"

// Konstruktor

//

// Aufgabe: Initialiserung

//

CMenu::CMenu ()
{
    m_pSpriteBackground = NULL;

} // Konstruktor


// Init

//

// Aufgabe: Hintergrund initialisieren

//

void CMenu::Init ();
{
    // Hintergrundbild laden

    m_pSpriteBackground = new CSprite;
    m_pSpriteBackground->Load ("Data/BackgroundSP.bmp");

}

// Quit

//

// Aufgabe: Instanzen freigeben

//

void CMenu::Quit ()
{
    // Hintergrundsprite freigeben

    if (m_pSpriteBackgroundSP != NULL)
    {
           delete (m_pBackgroundSP);
           m_pSpriteBackgroundSP = NULL;

    }

} // Quit


// ProEvent

//

// Aufgabe: Events bearbeiten

//

void CMenu::ProEvent ()
{
    SDL_Event Event;

    // Gab es ein Event?

    if (SDL_PollEvent (&Event))
    {
      // Ja, also schauen welches

      switch (Event.type)
      {
        case (SDL_QUIT):
        {
         // Framework beenden

         g_pFramework->Quit ();
         g_pFramework->Del ();

         return (0);

        } break;

        // Wurde eine Taste gedrückt?

        case (SDL_KEYDOWN):
        {
               switch(Event.key.keysym.sym)
                 {
                   case (SDLK_1):
                   {
                    // Neues Spiel

                    //

                    // Neue Instanz des Spielers

                    CGame Game;

                    // Spiel initialisieren

                    Game.Init ();

                    // Spiel laufen lassen. Diese 

                    // Funktion läuft so lange,

                    // bis das Spiel geschlossen 

                    // oder die Escape-Taste

                    // gedrückt wird

                    Game.Run ();

                    // Spiel beenden

                    Game.Quit ();

                   } break;

                   case (SDLK_2):
                   {
                    // Spiel beenden

                    //

                    // Neue Instanz des Menüs

                    CMenu Menu;

                    // Menü beenden

                    Menu.Quit ();

                    g_pFramework->Quit ();
                    g_pFramework->Del ();

                    return (0);

                   } break;
                }
        } break;
      }     
    }

} // ProEvent


und das sind die Fehlermeldungen:

--------------------Konfiguration: Menu - Win32 Debug--------------------
Kompilierung läuft...
Menu.cpp
c:\projekte\sdl-game\menu.cpp(9) : error C2065: 'm_pSpriteBackground' : nichtdeklarierter Bezeichner
c:\projekte\sdl-game\menu.cpp(18 ) : error C2447: Funktionskopf fehlt - Parameterliste im alten Stil?
c:\projekte\sdl-game\menu.cpp(34) : error C2065: 'm_pBackgroundSP' : nichtdeklarierter Bezeichner
c:\projekte\sdl-game\menu.cpp(34) : error C2541: delete : Objekte, die keine Zeiger sind, koennen nicht geloescht werden
c:\projekte\sdl-game\menu.cpp(61) : error C2562: 'ProEvent' : 'void'-Funktion gibt einen Wert zurueck
c:\projekte\sdl-game\menu.hpp(15) : Siehe Deklaration von 'ProEvent'
c:\projekte\sdl-game\menu.cpp(103) : error C2562: 'ProEvent' : 'void'-Funktion gibt einen Wert zurueck
c:\projekte\sdl-game\menu.hpp(15) : Siehe Deklaration von 'ProEvent'
Fehler beim Ausführen von cl.exe.

Menu.obj - 6 Fehler, 0 Warnung(en)

denjo

Treue Seele

  • »denjo« ist der Autor dieses Themas

Beiträge: 163

Wohnort: BLB

  • Private Nachricht senden

3

25.11.2006, 13:06

thx :)

denjo

Treue Seele

  • »denjo« ist der Autor dieses Themas

Beiträge: 163

Wohnort: BLB

  • Private Nachricht senden

4

25.11.2006, 13:09

OH
ich hab den Quelltext erneut kompiliert doch jetzt ziegt er 7 Fehler an

--------------------Konfiguration: Menu - Win32 Debug--------------------
Kompilierung läuft...
Menu.cpp
C:\Projekte\SDL-Game\Menu.cpp(9) : error C2065: 'm_pSpriteBackground' : nichtdeklarierter Bezeichner
C:\Projekte\SDL-Game\Menu.cpp(20) : error C2440: '=' : 'class CSprite *' kann nicht in 'int' konvertiert werden
Diese Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat
C:\Projekte\SDL-Game\Menu.cpp(21) : error C2227: Der linke Teil von '->Load' muss auf Klasse/Struktur/Union zeigen
C:\Projekte\SDL-Game\Menu.cpp(34) : error C2065: 'm_pBackgroundSP' : nichtdeklarierter Bezeichner
C:\Projekte\SDL-Game\Menu.cpp(34) : error C2541: delete : Objekte, die keine Zeiger sind, koennen nicht geloescht werden
C:\Projekte\SDL-Game\Menu.cpp(61) : error C2562: 'ProEvent' : 'void'-Funktion gibt einen Wert zurueck
c:\projekte\sdl-game\menu.hpp(15) : Siehe Deklaration von 'ProEvent'
C:\Projekte\SDL-Game\Menu.cpp(103) : error C2562: 'ProEvent' : 'void'-Funktion gibt einen Wert zurueck
c:\projekte\sdl-game\menu.hpp(15) : Siehe Deklaration von 'ProEvent'
Fehler beim Ausführen von cl.exe.

Menu.obj - 7 Fehler, 0 Warnung(en)

grek40

Alter Hase

Beiträge: 1 491

Wohnort: Dresden

  • Private Nachricht senden

5

25.11.2006, 13:20

return (0);

in ProEvent... da die Funktion void zurückgibt musst du einfach nur return; schreiben

ansonsten fehlt jetrzt grad deine Klassendeklaration, da anscheinend m_pSpriteBackground falsch geschrieben oder nicht vorhanden ist.

Fred

Supermoderator

Beiträge: 2 121

Beruf: Softwareentwickler

  • Private Nachricht senden

6

25.11.2006, 14:30

Überprüfe mal die Schreibweise derVariablen in der Klasse. Teilweise zieht ja bei die ein Rechtschribfehler ein paar andere Fehler nach sich. delete usw.

denjo

Treue Seele

  • »denjo« ist der Autor dieses Themas

Beiträge: 163

Wohnort: BLB

  • Private Nachricht senden

7

25.11.2006, 17:20

ok vielen Dank. Ich versuchs mal.

thx

mfg denjo

denjo

Treue Seele

  • »denjo« ist der Autor dieses Themas

Beiträge: 163

Wohnort: BLB

  • Private Nachricht senden

8

25.11.2006, 18:03

Alles klar, die Sachen hab ich in den Griff bekommen.

Jedoch taucht jetzt ein neues Problem auf....sry.

Beim kompilieren von der main.cpp Datei hat der Compiler wieder zich Fehlermeldungen ausgespuckt die ich mir mal wieder nicht erklären kann... :(

--------------------Konfiguration: Menu - Win32 Debug--------------------
Linker-Vorgang läuft...
Menu.obj : error LNK2001: Nichtaufgeloestes externes Symbol "public: void __thiscall CSprite::Load(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)" (?Load@CSprite@@QAEXV?$basic_string@DU?$char_traits@D@std@@V
?$allocator@D@2@@std@@@Z)
Menu.obj : error LNK2001: Nichtaufgeloestes externes Symbol "public: __thiscall CSprite::CSprite(void)" (??0CSprite@@QAE@XZ)
Menu.obj : error LNK2001: Nichtaufgeloestes externes Symbol "public: __thiscall CSprite::~CSprite(void)" (??1CSprite@@QAE@XZ)
Menu.obj : error LNK2001: Nichtaufgeloestes externes Symbol "public: void __thiscall CGame::Quit(void)" (?Quit@CGame@@QAEXXZ)
Menu.obj : error LNK2001: Nichtaufgeloestes externes Symbol "public: void __thiscall CGame::Run(void)" (?Run@CGame@@QAEXXZ)
Menu.obj : error LNK2001: Nichtaufgeloestes externes Symbol "public: void __thiscall CGame::Init(void)" (?Init@CGame@@QAEXXZ)
Menu.obj : error LNK2001: Nichtaufgeloestes externes Symbol "public: __thiscall CGame::CGame(void)" (??0CGame@@QAE@XZ)
Menu.obj : error LNK2001: Nichtaufgeloestes externes Symbol "public: void __thiscall CFramework::Quit(void)" (?Quit@CFramework@@QAEXXZ)
Menu.obj : error LNK2001: Nichtaufgeloestes externes Symbol _SDL_PollEvent
main.obj : error LNK2001: Nichtaufgeloestes externes Symbol "public: bool __thiscall CFramework::Init(int,int,int,bool)" (?Init@CFramework@@QAE_NHHH_N@Z)
LIBCD.lib(crt0.obj) : error LNK2001: Nichtaufgeloestes externes Symbol _main
Debug/Menu.exe : fatal error LNK1120: 11 unaufgeloeste externe Verweise
Fehler beim Ausführen von link.exe.

Menu.exe - 12 Fehler, 0 Warnung(en)

denjo

Treue Seele

  • »denjo« ist der Autor dieses Themas

Beiträge: 163

Wohnort: BLB

  • Private Nachricht senden

9

26.11.2006, 12:22

kann mir vielleicht jemand die Fehlermeldungen erklären...

was sind denn "nichtaufgelöste externe Verweise"

und wie kann man die Fehler beheben?

mfg denjo

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

10

26.11.2006, 12:34

Das bedeutet, dass du die angegebenen Methoden nicht implementiert hast.

Werbeanzeige