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

26.03.2013, 11:29

SDL_Game lässt sich nicht ausführen wenn TTF_Init() aufgerufen wird

Hallo,

ich habe folgendes Problem,
ich wollte das Spiel was am ende des Buches ist mit einer Highscore erweitern.
Hierfür habe ich mir die nötigen sachen alle aus dem Internet heruntergeladen und auch installiert...

Beim Kompilieren kommt auch kein Problem, jedoch wenn ich das Programm öffnen will erscheint nur kurz die cmd und dann schließt es sich wieder
und der einzige output ist

"SDL_Game.exe: Systemeigen" wurde mit Code -1073741515 (0xc0000135) beendet".

als ich mich auf fehlersuche begab mit dem debugger kam raus das er nichtmal die main aufruft..

als ich dann alle Funktionen die mit der Textausgabe zu tun hatten auskommentierte und schritt für schritt wieder einkommentierte, kam heraus das wenn ich die Funktion TTF_Init() weggebe das Programm wieder läuft...

weiß zufällig wer wie ich das behebe...

hab ich vlt nur was falsch eingestellt???

besten dank schon mal..

Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

2

26.03.2013, 12:34

TTF_Init vor SDL_Init aufgerufen?
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

3

26.03.2013, 13:06

Ja die wurde vorher aufgerufen worden, hab sogar (auch wenn das meist nix bringt) alle Flags dazugeschrieben

Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

4

26.03.2013, 13:09

Ich meinte, ob du die SDL_Init (wie es sein soll) vor der TTF_Init aufrufst.
Ansonsten poste mal deinen Code.
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

5

26.03.2013, 13:25

Aso ja doe SDL_Init habe ich vorher aufgerufen ^^, sorry hatte micht falsch asugedrückt...


Da der Code doch recht sehr lang ist udn ich erst anfänger, kürze ich unter umständen an der falschen stelle...

ich hab eigentlich nur eine Header mit der Classenbeschreibung und dann die cpp dafür.

zum initialisieren hab ich halt eine funktion geschrieben wo eben das TTF_Init vorkommt und wenn diese drin ist, wenn kompiliert wird, geht das Prog anschließend nicht ..

Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

6

26.03.2013, 13:29

Dann zeig mir mal den Code, pack ihn in eine .zip oder pack in auf codepad. Und sag mir die Datei und Zeilennummer in der deine TTF_Init vorkommt. ;)
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

7

26.03.2013, 13:55

also in dem Zip ordner sollten jetzt alle datein sein,

hab alles soweit auskommentiert das es (zumindest bei mir lauffähig ist)

die wichtigen datein sind halt Punkteausgabe.cpp und game.cpp,

in game.cpp ist bei der Init funktion unten die zeile 44 auskommentiert wenn du diese reinkommentierst und in Punkteausgabe.cpp die funktion reinkommentierst (erste funktion)

dann läufts nimma...


Lustigerweiße ist mir aufgefallen, auch wenn ich die Funktion in z.44 in game.cpp nicht aufrufe, das Spiel trotzdem nicht gestarted werden kann...
wenn in Punkteausgabe.cpp alle funktionen mitkompiliert werden... creepy
»Chilldose« hat folgende Datei angehängt:
  • Spiel.zip (983,16 kB - 42 mal heruntergeladen - zuletzt: 27.01.2024, 13:11)

8

26.03.2013, 15:58

habe mich daweil aufgemacht bissi musik ins Spiel zu implementieren und lustigerweise kommt jetzt genau derselbe fehler wieder...

mir kommts langsam so vor, als ob ich vielleicht bei den Einstellungen etwas vergessen habe... :hmm:

beim Implementieren muss ich ja nur bei Extras->Optionen->Projekte und Projektmappen-> VC++ Verzeichnisse, den Ornder angeben wo Includdatein und die Bibliotheksdatein auf meiner festplatte zu finden sind

anschließend muss ich bei meinem Projekt nur unter Eigenschaften->Linker->Eingabe->Zusätzliche Abhängigkeiten die lib datein angeben...

oder hab ich da was grundsetzliches vergessen???

9

26.03.2013, 20:13

Ich hab nur mal das gröbste Korrigiert.
...

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
// Alle Systeme der SDL initialisieren
if (SDL_Init (SDL_INIT_VIDEO | SDL_INIT_TIMER) == -1 )//!!! Das war auskommentiert, glaubich
    if (SDL_INIT_EVERYTHING == -1 )
{
    cout << "SDL konnte nicht initialisiert werden!" << endl;
    cout << "Fehlermeldung: " << SDL_GetError () << endl;

    Quit ();

    return (false);
}

TTF_Init();//!!! Das gehört hier hin.

// Vollbild oder Fenstermodus einstellen
if (bFullscreen == true)
{
    m_pScreen = SDL_SetVideoMode (ScreenWidth, ScreenHeight, ColorDepth,
        SDL_HWSURFACE| SDL_DOUBLEBUF |
        SDL_FULLSCREEN);
}
...

void CFramework::Quit ()
{
    // SDL beenden
    TTF_Quit();//!!! Und das gehört hier hin.
    SDL_Quit ();
} // Quit

...

void CText::Init()
{
    LoadFont();
    SetColorKey(255,255,255);
    SetPosition(10, 10);
    m_pScreen = g_pFramework->GetScreen (); //holt mir den screen 
    //TTF_Init();//!!! Weg damit.
}

//Destruktor
//

void CText::Quit()
{
    //Font schließen
    TTF_CloseFont(m_font);
    //font zeiger freigeben
    //TTF_Quit//!!! Weg damit.
}


void CText::Render()
{
    SDL_BlitSurface(m_text, NULL, m_pScreen, &m_textPosition);
    SDL_FreeSurface(m_text);//!!! Speicher freigeben nicht vergessen.
}//Rendern


Deine Einstellungen scheinen OK zu sein.
Kann auch sein das due die Falschen Dateien runtergeladen hast/benutzt.

10

27.03.2013, 11:02

Danke für die tipps, vor allem der mit SDL_freesurface !

Habe jetzt mal alles gelöscht und neu installiert... jetzt geht es auf einmal.... :pillepalle:

Werbeanzeige