SDL: probleme mit SDL_Image + SDL_Mixer



  • moin,

    ich hab ein problem, wenn ich beide libs zusammen benutze.

    SDL_Image version 1.2.3
    SDL_Mixer version 1.2.5
    kompiliert unter winxp mit mingw g++ 3.2.3.

    starte ich das programm kriege ich die fehlermeldung:
    "Die Anwendung konnte nicht richtig initialisiert werden
    (0xc00000005)."
    die meldung kommt bevor irgend eine zeile im programm
    ausgefuehrt wird.

    kommentiere ich einen der beiden teile aus (also entweder
    den image oder den mixer teil) laeuft alles...

    woran koennte das liegen?
    ich verstehs nich....

    #include <SDL/SDL.h>
    #include <SDL/SDL_Image.h>
    #include <SDL/SDL_Mixer.h>
    #include <cstdlib>
    #include <iostream>
    
    using namespace std;
    
    int main(int argc,char* argv[])
    {
    	cerr << "SDL init...";
    	if ( SDL_Init(SDL_INIT_AUDIO | SDL_INIT_VIDEO) == -1 )
    	{
    		cerr << "Can't init SDL: " << SDL_GetError() << endl;
    		exit(1);
    	}
    	cerr << "ok" << endl;
    
    	atexit(SDL_Quit);
    
    	// Mixer-Teil
    	cerr << "Init audio...";
    	if ( Mix_OpenAudio(22050,MIX_DEFAULT_FORMAT,2,1024) == -1 )
    	{
    		cerr << "Can't init Audio: " << Mix_GetError() << endl;
    		exit(1);
    	}
    	cerr << "ok" << endl;
    
    	atexit(Mix_CloseAudio);
    
    	Mix_Music* music = Mix_LoadMUS("z1-dungeon1.mid");
    	if ( music == 0 )
    	{
    		cerr << "Can't load music file: " << Mix_GetError() << endl;
    		exit(1);
    	}
    
    	if ( Mix_PlayMusic(music,-1) == -1 )
    	{
    		cerr << "Can't play music: " << Mix_GetError() << endl;
    		exit(1);
    	}
    	// Ende Mixer
    
    	// Image-Teil
    	cerr << "Init screen...";
    	SDL_Surface* screen = SDL_SetVideoMode(800,600,16,SDL_HWSURFACE);
    	if ( screen == 0 )
    	{
    		cerr << "Can't set video mode: " << SDL_GetError() << endl;
    		exit(1);
    	}
    	cerr << "ok" << endl;
    
    	SDL_Surface* image = IMG_Load("tuxjpg.jpg"); //SDL_LoadBMP("tuxbmp.bmp");
    	if ( image == 0 )
    	{
    		cerr << "Can't load image: " << IMG_GetError() << endl;
    		exit(1);
    	} 
    
    	SDL_Rect dest;
    	dest.x=100;
    	dest.y=100;
    	dest.h=image->h;
    	dest.w=image->w;
    
    	SDL_BlitSurface(image,0,screen,&dest);
    	SDL_FreeSurface(image);
    	SDL_UpdateRect(screen,0,0,0,0);
    	// ende Image
    
    	SDL_Event event;
    	bool done = false;
    
    	while ( !done )
    	{
    		while ( SDL_PollEvent(&event) )
    		{
    			switch ( event.type )
    			{
    				case SDL_QUIT:
    					done=true;
    					break;
    			}
    		}
    	}
    
    	return 0;
    }
    

Anmelden zum Antworten