[C++] [SDL2] - funkcja SDL_CreateWindow nie działa, przez co cały program nie działa
Witam,
problem jest szybki i moim zdaniem szybki do załatwienia, ale ja za nic nie mogę go znaleźć.
Otóż chodzi o to, że w funkcji "SDL_CreateWindow ("SDL2Test",SDL_WINDOWPOS_CENTERED,SDL_WINDOWPOS_CENTERED,800,600,NULL);"
w ostatnim argumencie, gdzie dałem "NULL", Bulid log podaje, że tam nic niema, ale jako Warning.
Wtedy, gdy uruchamiam program, okno pokazuje "Program SDL2.exe przestał działać", i później w konsoli pokazuje komunikat:
-1073741819 (0xC0000005)
C:\Users\piotr\Desktop\programowanie\sdl2\main.cpp:24:99: warning: passing NULL to non-pointer argument 6 of 'SDL_Window* SDL_CreateWindow(const char*, int, int, int, int, Uint32)' [-Wconversion-null]
okno = SDL_CreateWindow ("SDL2Test",SDL_WINDOWPOS_CENTERED,SDL_WINDOWPOS_CENTERED,800,600,NULL);
Gdy z "NULL" dałem na np. "SDL_WINDOW_RESIZABLE", warning zniknął, ale nadal jest zawiecha, i nadal jest komunikat w konsoli.
Moje pytanie jest takie: Jak to wyeliminować? Otóż przed włączeniem innego projektu i powrotu do tego z SDL2, wszystko było okej, natomiast gdy włączyłem program i potem wróciłem do tego, był już ten problem. Zaznaczam, że program, który włączyłem, był zabugowany i również tam wyskakiwał taki błąd.
Zamieszczam cały kod:
#include <iostream>
#include <SDL2/SDL_image.h>
#include <SDL2/SDL_ttf.h>
#include <SDL2/SDL_mixer.h>
#include <windows.h>
#include <stdint.h>
using namespace std;
SDL_Window * okno;
SDL_Surface * ekran;
SDL_Event zdarzenie;
SDL_Rect rect1;
SDL_Rect rect2;
int frame = 0;
int posX = 100;
int posY = 100;
int main( int argc, char * args[] )
{
SDL_Init( SDL_INIT_EVERYTHING );
okno = SDL_CreateWindow( "SDL2Test", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 800, 600, NULL );
ekran = SDL_GetWindowSurface( okno );
for(;; )
{
if( frame == 0 )
{
SDL_Surface * tlo = IMG_Load( "grafika/sdl2.bmp" );
SDL_Surface * postac = IMG_Load( "grafika/postac.bmp" );
while( frame == 0 )
{
if( GetAsyncKeyState( VK_LEFT ) )
{
posX = posX - 5;
}
if( GetAsyncKeyState( VK_RIGHT ) )
{
posX = posX + 5;
}
if( GetAsyncKeyState( VK_UP ) )
{
posY = posY - 5;
}
if( GetAsyncKeyState( VK_DOWN ) )
{
posY = posY + 5;
}
if( GetAsyncKeyState( VK_ESCAPE ) )
{
frame = 1;
}
rect2.x = 0;
rect2.y = 0;
SDL_BlitSurface( tlo, NULL, ekran, & rect2 );
rect2.x = posX;
rect2.y = posY;
rect2.w = 256;
rect2.h = 128;
SDL_BlitScaled( postac, NULL, ekran, & rect2 );
SDL_UpdateWindowSurface( okno );
SDL_Delay( 16.666666 );
while( SDL_PollEvent( & zdarzenie ) )
{
if( zdarzenie.type == SDL_QUIT )
{
return 0;
}
}
SDL_FreeSurface( tlo );
SDL_FreeSurface( postac );
}
}
if( frame == 1 )
{
SDL_Surface * tlo1 = IMG_Load( "grafika/postac.bmp" );
while( frame == 1 )
{
rect2.x = 0;
rect2.y = 0;
rect2.w = 800;
rect2.h = 600;
SDL_BlitScaled( tlo1, NULL, ekran, & rect2 );
while( SDL_PollEvent( & zdarzenie ) )
{
if( zdarzenie.type == SDL_QUIT )
{
return 0;
}
}
SDL_UpdateWindowSurface( okno );
SDL_Delay( 16.666666 );
SDL_FreeSurface( tlo1 );
}
}
}
return 0;
}