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

11

18.09.2007, 19:04

der Fehler taucht ja schon während der if-Anweisung auf, sprich, der führt noch nichmal die printf-Anweisung aus
...like a baby who's sweet and innocent :-)

12

19.09.2007, 16:34

Ich hab das Programm nochmal etwas umgeändert und das Auftreten des Fehlers kommentiert:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// Nur zum Test, ob SDL funktioniert

#pragma comment(lib,"SDLmain.lib")
#pragma comment(lib,"SDL.lib")

#ifdef _WIN32
#undef main
#endif

#include <stdio.h>
#include "SDL\SDL.h"

int main(int argc, char *argv[])
{
    if(SDL_Init(SDL_INIT_VIDEO)==false) // an dieser Stelle bricht das Programm ab

    {
        printf("Fehler: %s",SDL_GetError());
        exit(-1);
    }
    SDL_Quit();
    exit(0);
}


ich hoffe dass jetzt etwas mehr Licht ins Dunkel kommt
...like a baby who's sweet and innocent :-)

13

19.09.2007, 21:34

Hast du auch die SDL.dll im Ordner wo du die Anwendung ausführst?

14

19.09.2007, 22:19

C-/C++-Quelltext

1
if(SDL_Init(SDL_INIT_VIDEO)==false)

Das ist Falsch! SDL gibt bei einem Fehler -1 zurück.
Und wenn es funktioniert 0... bei deiner Anweisung wenn es geht gibt es 0 zurück und dein Programm erkennt es als "Fehler"!
Zudem fehlt ein return 0; darum können auch komische Werte entstehen
http://www.pennergame.de/functions/generate_signature_114955.jpg

Wo die Fähigkeiten aufhören ... fängt der Optimismus an

"Unendlichkeit ist der Mangel an Grenzen" Aristoteles

15

20.09.2007, 12:40

@chriss: Jepp, habe sowohl die SDL.dll, als auch die SDLmain.lib und SDL.lib im Ordner drinne (is bloß immer schwer zu erkennen, welcher der Richtige is)

@giesbert: Da fehlt noch der else-Zweig, is schon richtig (Anm.: habsch grad ausprobiert, geht auch nich)
durch die exit()-Funktion beende ich doch schon das Programm, genauso wie mit return.
...like a baby who's sweet and innocent :-)

16

20.09.2007, 14:10

Es ist eben nicht richtig...
Falls die Funktion funktioniert gibt sie nunmal 0 zurück und false == 0! Da ist es egal ob es eine else gibt. Bei einem Fehler gibt sie -1 zurück...
Egal ob du eit hast... deine main gibt nichts zurück... dann sind solche Zahlen wie -858993460 normal... wenn ein Fehler kommt kannst du in der main 1 oder -1 zurückgeben.. das Programm wird dann so oder so beendet
http://www.pennergame.de/functions/generate_signature_114955.jpg

Wo die Fähigkeiten aufhören ... fängt der Optimismus an

"Unendlichkeit ist der Mangel an Grenzen" Aristoteles

17

20.09.2007, 14:54

Irgendwie hab ich grad nen logischen Hänger, also nich wundern, dass ich immernoch nich ganz weiß, was du meinst :?

hier nochmal ne aktualisierte Version des Programms (der Fehler besteht weiterhin):

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
// Nur zum Test, ob SDL funktioniert

#pragma comment(lib,"SDLmain.lib")
#pragma comment(lib,"SDL.lib")

#ifdef _WIN32
#undef main
#endif

#include <stdio.h>
#include "SDL/SDL.h"

int main(int argc, char *argv[])
{
    printf("SDL initialisieren...");
    
    if(SDL_Init(SDL_INIT_VIDEO)>0) // an dieser Stelle bricht das Programm ab

    {
        printf("Fehler: %s",SDL_GetError());
        return -1;
    }
    else
    {
        printf("SDL erfolgreich initialisiert.");
        SDL_Quit();
        return 0;
    }
}


Übrigens findet man in jedem Anfängertutorial den selben Quellcode und ich versichere euch, dass genau derselbe Quellcode schon einmal bei mir gefunzt hat mit genau der gleichen IDE(habe damals an nem Framework gearbeitet, nur leider kann ich daran nich weiter arbeiten wegen dieses doofen Fehlers und das Schlimmste is: ICH WEIß EINFACH NICH WORAN ES LIEGT :( !!!!!!!!!)(die else-Verzweigung habe ich nur sicherheitshalber eingebaut)

Ich erkläre nochmal, was ich in VC 2005 eingestellt habe (nachzlesen auf http://www.libsdl.org/cgi/docwiki.cgi/FA…02005_20Express):

Als erstes habe ich im Projekt unter
Projet|SDL_Test Eigenschaften...|C\C++|Codegenerierung|Laufzeitbibliothek die Option Multitheaded-DLL (/MD) gewählt

Dann habe ich unter
Projekt|SDL_Test Eigenschaften...|C\C++|Allgemein|Zusätzliche Includeverzeichnisse den Pfad angegeben, wo die SDL-Dateien sind:
C:\Programme\Microsoft Visual Studio 8\VC\include\SDL

Zum Schluss habe ich noch die SDL.dll, die SDL.lib und die SDLmain.lib in das Projektverzeichnis kopiert:
C:\Dokumente und Einstellungen\MeinName\Eigene Dateien\Visual Studio 2005\Projects\SDL_Test\SDL_Test
...like a baby who's sweet and innocent :-)

18

20.09.2007, 15:19

Bei deinem alten Quellcode fehlte bei deiner main()-Funktion ein return wasauchimmer... du hattest einfach nur exit...
WEnn du kein return x hast... sind solche werte wie -8974343 nochwas ganz normal... wird ja nix zurückgegeben...

[edit]
Un wo bricht das ab?... Das programm macht dannach ni mehr besonderes... das bricht nicht ab... das ist am Ende und beendet sich...
Mach mal ne Sleep(3000) oder so... dann is das noch 3 Sekunden da
[/edit]
http://www.pennergame.de/functions/generate_signature_114955.jpg

Wo die Fähigkeiten aufhören ... fängt der Optimismus an

"Unendlichkeit ist der Mangel an Grenzen" Aristoteles

19

20.09.2007, 15:33

der Fehler tritt ja auch erst zur Laufzeit auf:

Quellcode

1
Unbehandelte Ausnahme bei 0x10014738 in SDL_Test.exe: 0xC0000005: Zugriffsverletzung beim Lesen an Position 0xfeeefeee.


also unnmittelbar beim Verzweigen in das if-Konstrukt.

mal nebenbei: habe mir grad die aktuellen SDL-Bibliotheken (1.2.12) runtergeladen und feststellen müssen, dass diesmal kein lib-Verzeichnis vorhanden ist.

kann ich die alten libs und dlls weiter nutzen?
...like a baby who's sweet and innocent :-)

xCite

Frischling

Beiträge: 77

Wohnort: Deutschland

Beruf: Berufsfachschüler

  • Private Nachricht senden

20

20.09.2007, 15:37

Zitat von »"Spieleprogrammierer"«

C-/C++-Quelltext

1
2
3
4
5
    if(SDL_Init(SDL_INIT_VIDEO)>0) // an dieser Stelle bricht das Programm ab

    {
        printf("Fehler: %s",SDL_GetError());
        return -1;
    }


Vielleicht so?

C-/C++-Quelltext

1
if (SDL_Init (SDL_INIT_VIDEO) < 0)

Werbeanzeige