in Konsole schreiben bei Benutzung von SDL
-
Hallo zusammen,
ich teste mich gerade ein bisschen durch die SDL-Funktionen...
Jetzt wollte ich ein SDL-Fenster öffnen, darin ein Bild anzeigen lassen und in die Konsole ein Paar Sachen schreiben.
Leider kommt in der Konsole nichts an davon

Alle "cout"-Befehle in meinem Code sind in der Konsole nicht sichtbar...
weiß jemand warum?#include <iostream> #include "SDL/SDL.h" using namespace std; //The attributes of the screen const int SCREEN_WIDTH = 1280; // Hier wird die Größe des Ausgabebildschirms festgelegt.... const int SCREEN_HEIGHT = 960; const int SCREEN_BPP = 32; //SCREEN_BPP is the bits per-pixel. In all of the tutorials, 32-bit color will be used. float time1, time2, time_gesamt; SDL_Surface *screen, *osito_vorne = NULL; // Pointer auf Null setzen SDL_Rect dest; int main( int argc, char* args[] ) // SDL brauch diese Parameter { cout << "hallo" << endl; // Wie schreib ich in die Konsole? SDL_Init ( SDL_INIT_EVERYTHING ); screen = SDL_SetVideoMode( SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_BPP, SDL_SWSURFACE ); SDL_WM_SetCaption( "Hello World", NULL ); osito_vorne = SDL_LoadBMP("osito_vorne.bmp"); // Definimos donde dibujaremos el gráfico // y lo copiamos a la pantalla. dest.x = 100; dest.y = 100; dest.w = osito_vorne->w; dest.h = osito_vorne->h; SDL_BlitSurface(osito_vorne, NULL, screen, &dest); cout << "Test" << endl; // Mostramos la pantalla SDL_Flip(screen); time1 = SDL_GetTicks(); SDL_Delay( 2000 ); time2 = SDL_GetTicks(); time_gesamt = time2 - time1; cout << time_gesamt << endl; SDL_Quit(); return 0; }
-
Has du's schon mal mit "printf" probiert ?
Aus "stdio.h"
-
SDL leitet die Standardausgabe in Dateien um. Schau mal in den Ordner der .exe-Datei (oder das Projektverzeichnis, wenn du von einer IDE aus startest). Dort sollte sich die Datei "stdout.txt" befinden, welche deinen Output enthält.
Wie das verhindert werden kann, weiss ich allerdings auch nicht gerade - aber das Problem liegt bei SDL.
-
wohl eher am windowsport von SDL, denn unter Linux funktioniert das mit der Konsole eigentlich immer. Vielleicht ist aber auch die IDE schuld, dass die die Ausgabe sobald ein Fenster da ist automatisch in eine Datei umleitet, das ist aber nur spekulation.
-
Nexus schrieb:
SDL leitet die Standardausgabe in Dateien um. Schau mal in den Ordner der .exe-Datei (oder das Projektverzeichnis, wenn du von einer IDE aus startest). Dort sollte sich die Datei "stdout.txt" befinden, welche deinen Output enthält.
Wie das verhindert werden kann, weiss ich allerdings auch nicht gerade - aber das Problem liegt bei SDL.
Hast Recht, ist alles in eine Datei namens "stdout.txt" umgeleitet worden...
Das erste cout schreibe ich allerdings bevor ich überhaupt das SDL-Fenster öffne, und das landet trotzdem in der Datei und nicht in der Konsole... sehr merkwürdig.
Danke für die Antworten! Wenn wer noch weiteres dazu weiß, nur heraus damit

-
Vermutlich ruft SDL intern WinMain auf. Ein AllocConsole könnte hier vllt. helfen.
-
Krux schrieb:
wohl eher am windowsport von SDL, denn unter Linux funktioniert das mit der Konsole eigentlich immer. Vielleicht ist aber auch die IDE schuld, dass die die Ausgabe sobald ein Fenster da ist automatisch in eine Datei umleitet, das ist aber nur spekulation.
Nein, das macht SDL.
"--disable-stdio-redirect"
Ist die Option die Du suchst.. zumindest für Linux bzw MSys
lg