siis ikkuna välähtää vaan.
käytän SDL2, windows 8.1 64-bit ja codeblocks
ja teen noit lazy foo' juttuja ja koodi on siis tää
#include <SDL.h> #include <stdio.h> const int SCREEN_WIDTH = 640; const int SCREEN_HEIGHT = 480; bool init(); bool loadMedia(); void close(); SDL_Window* gWindow = NULL; SDL_Surface* gScreenSurface = NULL; SDL_Surface* gHelloWorld = NULL; bool init(){ bool success = true; if( SDL_Init( SDL_INIT_VIDEO ) < 0 ){ printf( "SDL virhe SDL_Error: %s\n", SDL_GetError() ); success = false; } else{ gWindow = SDL_CreateWindow( "SDL YEAH", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_SHOWN ); if ( gWindow == NULL ) { printf( "ikkuna rikki SDL_Error: %s\n", SDL_GetError() ); success = false; } else{ gScreenSurface = SDL_GetWindowSurface( gWindow ); } } return success; } bool loadMedia(){ bool success = true; gHelloWorld = SDL_LoadBMP( "SDL/pinguen.bmp" ); if ( gHelloWorld == NULL ) { printf( "kuva virhe %s SDL Error: %s\n", "SDL/pinguen.bmp", SDL_GetError() ); success = false; } return success; } void close(){ SDL_FreeSurface( gHelloWorld ); gHelloWorld = NULL; SDL_DestroyWindow( gWindow ); gWindow = NULL; SDL_Quit(); } int main ( int argc, char* args[] ) { if ( !init() ) { printf( "Fail!!!\n" ); } else{ if ( !loadMedia() ){ printf( "media virhe\n" ); } else{ SDL_BlitSurface ( gHelloWorld, NULL, gScreenSurface, NULL ); SDL_UpdateWindowSurface( gWindow ); SDL_Delay( 10000 ); } } close(); return 0; }
ja jostain syystä sis vaa välähtää ruudul, eikä tuu mitää erroreitakaa.
täs toi log
-------------- Build: Debug in SDL (compiler: GNU GCC Compiler)--------------- Target is up to date. Nothing to be done (all items are up-to-date). -------------- Run: Debug in SDL (compiler: GNU GCC Compiler)--------------- Checking for existence: C:\Users\nevil\Documents\Projects\SDL\bin\Debug\SDL.exe Executing: "C:\Users\nevil\Documents\Projects\SDL\bin\Debug\SDL.exe" (in C:\Users\nevil\Documents\Projects\SDL\.) Process terminated with status 0 (0 minute(s), 0 second(s))
Onko tiedosto varmasti liitetty projektiin? Koska tuon login mukaan mitään käännöstä ei ole tapahtunut.
joo kai...
Sulla on projektin määrityksissä virhe. Itse kokeilin:
Loin Code::Blocksissa uuden projektin 'Empty project'
Lisäsin linkkeriparametreihin -lSDL2.dll
ja -lSDL2main
Loin uuden tiedoston main.cpp
ja kopioin siihen tuon antamasi koodin
Loin alikansion SDL
projektin kansioon ja tein sinne kuvan pinguen.bmp
Käänsin:
g++ kirjoitti:
-------------- Build: Debug in supermiehen sdl testi (compiler: GNU GCC Compiler)---------------
g++.exe -Wall -g -c "(polku)\supermiehen sdl testi\main.cpp" -o "(polku)\supermiehen sdl testi\main.o"
g++.exe -o "(polku)\supermiehen sdl testi\supermiehen sdl testi.exe" "(polku)\supermiehen sdl testi\main.o" -lSDL2.dll -lSDL2main -lmingw32
Output size is 59.12 KB
Process terminated with status 0 (0 minutes, 0 seconds)
0 errors, 0 warnings (0 minutes, 0 seconds)
Tulos: http://fpaste.dy.fi/mg
ei vaa toimi siis käytän sdl 32 bittistä versioo koska en saanu 64 bittistä toimii (onks sil välii?) siis windows on 64 bittininen...
ja siis linkkeri parametrit on nyt noi mitä laitoit... ja nyt siihen tuli yhtäkkii tällänen error
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.8.1\..\..\..\libmingw32.a(main.o):main.c:(.text.startup+0xa7)||undefined reference to `WinMain@16'|
...ei vaa toimi ja käytän siis codeblocksii
Laita includeiden jälkeen #undef main
.
taas vaa väläyttää sen
Onko projektikansiossa tiedostoa stdout.txt
tai stderr.txt
? SDL ohjaa standardivirtojen tulostukset joskus sinne. Jos haluat tulostuksen konsoliin, lisää parametri -mconsole
.
ei oo noit tiedostoi siel on SDL.layout ja SLD.depend sain kuvan tost consolest ja sielt tuli nää errorit: http://fpaste.dy.fi/2P
Luitko virhettä ja katsoitko mitä koodi tekee jos ei löydä kuvaa?
Voit myös Codeblocksista määritellä missä hakemistossa ohjelma suoritetaan. Project -> Properties -> Build Targets ja valitset joko Debug tai Release -> execution working dir.
Jos taasen menet suoraan hakemistoon ja käynnistät sovelluksen, se pitäisi toimia suoriltaan.
joo eli tajusin se ei löydä tota kuvaa ja jos se ei löydä sitä se ei käynnisty :D mut miks???
Koska olet koodannut sen niin, ja koska et ole asettanut suoritushakemistoa oikein, kuten nomic neuvoo. Vai mahtaako sitä kuvaa olla sinulla ollenkaan?
kiitti... :D
Aihe on jo aika vanha, joten et voi enää vastata siihen.