Perşembe, Haziran 03, 2010

SDL ile Konsol da veri yazma/okuma

SDL yi veya herhangi bir harici kütüphanesini(SDL_net,SDL_image vs..) projenize init ettiğiniz zaman giriş/çıkış akımlarının(cout,cin,scanf,printf vs..) çalışmadığını görürsünüz. Bunun sebebi SDL'yi yazan arkadaşlar giriş çıkış akımlarını stdout/stderr adında text dosyalarına(projeyi çalıştırdığınızda .exe nin olduğu yerde bu dosyaları göreceksiniz) yönlendirme gereği duymuş olmaları. Bu yüzden giriş-çıkış işlemlerini direk olarak konsol ekranından yapamıyoruz. Ben bundan kurtulmanın iki yolunu buldum,

1- Zor olan yöntem den başlıyorum ilk. libSDLmain.a yı tekrardan derlemek. Derleme esnasında derleme ayarlarına "--disable-stdio-redirect" seçeneğini eklemek yeterli. Bu sayede SDL'nin yönlendirme ayarını iptal etmiş oluyoruz.

2- Kolay olan da ise yapmanız gereken tek şey aşağıdaki iki satırlık kodu projenizin main() fonksiyonuna eklemek.

freopen( "CON", "w", stdout );
freopen( "CON", "w", stderr );


Eğer yine sorun yaşarsanız


#include
#include
using namespace std;
....
ofstream ctt("CON");
freopen( "CON", "w", stdout );
freopen( "CON", "w", stderr );
...
ctt.close();


veya

FILE * ctt = fopen("CON", "w" );
freopen( "CON", "w", stdout );
freopen( "CON", "w", stderr );
...
ctt.close();

Kolay gelsin...

Hiç yorum yok: