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

1

13.08.2007, 18:35

Standardfragen zur SDL

Moin moin....

Ich wollte mich etwas mit der SDL beschäftigen und bin auf folgendes Problem gestoßen:

Sobald ich versuche zB string, list oder den iostream zu includieren,
bekomme ich folgende Fehlermeldung:

Beispiel mit:

#include <string>

error C2504: 'exception' : Basisklasse undefiniert
error C2084: Funktion 'int __cdecl SDL_main(int,char *[])' hat bereits einen Funktionsrumpf

versuche ich den iostream einzubinden bekomme ich 102 Fehlermeldungen wobei der erste Fehler mich auf die:
string standard header Datei verweist....

Bei <list> sind es "nur" 33 Fehler und ich werde ebenfalls auf die zuständige HeaderDatei verwiesen.

Ich poste einfach mal den simplen Beispielcode

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
#include <stdlib.h>
#include <SDL.h>

int main(int argc, char *argv[])
{

    SDL_Surface *screen; 
    SDL_Event event;
    
    int done = 0;
    if (SDL_Init(SDL_INIT_VIDEO) == -1) {
        printf("Can't init SDL:  %s\n", SDL_GetError());
        exit(1);
    }
    atexit(SDL_Quit); 

    screen = SDL_SetVideoMode(640, 480, NULL, SDL_HWSURFACE | SDL_DOUBLEBUF);
   
    if (screen == NULL) {
        printf("Can't set video mode: %s\n", SDL_GetError());
        exit(1);
    }

    while (!done) {
        while (SDL_PollEvent(&event)) {
            switch (event.type) {
            case SDL_QUIT:
                done = 1;
                break;
            }
        }
    }

     return 0;
}


Wie man sieht handelt es sich nur um die Initialisierung der SDL und dem Erstellen eines Fensters (läuft Problemlos).

Sobald ich jetzt aber vor oder nach der Einbindung der SDL.h zB.
#include<string> setze kommen die besagten Fehlermeldungen.

WAS FEHLT ?

using namespace std;
hilft mir leider auch nicht weiter.

Zur Info:
Die Konsole im Hintergrund habe ich ausgeschalten, wobei das imo nichts ändern sollte.

BTW mich wundert, daß im SDL Spiel des Buches C++ fuer Spieleprogrammierer in der Klasse CSprite, dortige Funktion "Load"
ein string erwartet wird.
Ich kann jedoch im ganzen Programm nirgends #include <string> finden.

Das verwirrt mich jetzt doch ziemlich. Was läuft da anders?

2

13.08.2007, 20:16

Wie vermutet: Problem, wo keines sein sollte ;)

Nach fast 2 Stunden Verzweiflung experimentierte ich ein wenig herum.

Das ging soweit, daß nachdem GAR NICHTS mehr lief (außer reine SDL-Programme !!!) ich nicht mal ein Hello World zu laufen bekam. ;)

Da der Fehler nun wohl sehr elemantar war und ich vermute, daß sich irgendeine Einstellung in VC++ 6 verändert hat, habe ich einfach VC neu installiert und nach ersten Tests läuft das meiste.

Falls jemand weiß was (s)ich in den VC Optionen verändert haben könnte, wär ich für Antworten noch dankbar.

DarioFrodo

Treue Seele

Beiträge: 349

Wohnort: Kerkau, 100km nördlich von Magdeburg

Beruf: Selbstständig

  • Private Nachricht senden

3

14.08.2007, 08:44

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
// Main Funktion

//main

#ifdef _WIN32
#undef main
#endif
int main(int argc, char *argv[])
{
     // Code

     return 0;
}


So sollte man bei der Verwendung von SDL unter Windows die Main definieren.
Erst wenn der letzte Fluss vergiftet,
der letzte Baum gefällt,
der letzte Fisch gefangen,
dann werdet ihr merken, dass man Geld nicht essen kann

Man verkauft die Erde nicht, auf der die Menschen wandeln.

- Indianerweisheiten

Ich bin auch ein einhornimmond ;)

Werbeanzeige