Minkä takia SDL_imagen asennus onnistuu käsipelillä mutta sitten taas SDL_gfx:än ei?
Vastaavat jutut tein molemmissa.
Eli kopsin .h tiedostot projektiin ja .dll tiedostot projektiin ja libbien sisällön laitoin mingw\libbiin....
Toki säädin linkkerin asetukset kohilleen.
Heti kun rotozoomin laittaa includeen niin alkaa no such file or directory SDL.h:sta.
Voisiko joku viisas kirjoittaa oppaan SDL:än ja lisäkirjastojen laitosta CodeBlocksiin?
SDL_rotozoom.h:sta löytyy rivi:
#include "SDL.h"
Tämä viittaa siihen, että SDL_rotozoom.h:n pitää olla samassa hakemistossa SDL.h:n kanssa, eli hakemistossa mingw\include\SDL\
eikä mingw\include\
. Jos lisäät projektiisi vain tuon tiedoston, niin muuta kyseinen rivi muotoon #include <SDL/SDL.h>
#include <cstdlib> #include <SDL.h> #include <SDL_image.h> //#include <SDL_mixer.h> #include <SDL_rotozoom.h> // SDL_gfx Rotozoom #include <SDL_gfxPrimitives.h>// SDL_gfx Primitives #include <SDL_framerate.h> // SDL_gfx Framerate Manager int main ( int argc, char** argv ) { // initialize SDL video if ( SDL_Init( SDL_INIT_VIDEO ) < 0 ) { printf( "Unable to init SDL: %s\n", SDL_GetError() ); return 1; } // make sure SDL cleans up before exit atexit(SDL_Quit); // create a new window SDL_Surface* screen = SDL_SetVideoMode(640, 480, 16,SDL_HWSURFACE|SDL_DOUBLEBUF); if ( !screen ) { printf("Unable to set 640x480 video: %s\n", SDL_GetError()); return 1; } // load an image SDL_Surface* bmp = SDL_LoadBMP("cb.bmp"); if (!bmp) { printf("Unable to load bitmap: %s\n", SDL_GetError()); return 1; } SDL_Surface* joku = IMG_Load("cb.png"); if (!joku) { printf("Unable to load png: %s\n", SDL_GetError()); return 1; } // centre the bitmap on screen SDL_Rect dstrect; dstrect.x = (screen->w - joku->w) / 2; dstrect.y = (screen->h - joku->h) / 2; // program main loop bool done = false; while (!done) { // message processing loop SDL_Event event; while (SDL_PollEvent(&event)) { // check for messages switch (event.type) { // exit if the window is closed case SDL_QUIT: done = true; break; // check for keypresses case SDL_KEYDOWN: { // exit if ESCAPE is pressed if (event.key.keysym.sym == SDLK_ESCAPE) done = true; break; } } // end switch } // end of message processing // DRAWING STARTS HERE // clear screen SDL_FillRect(screen, 0, SDL_MapRGB(screen->format, 0, 0, 0)); // draw bitmap SDL_BlitSurface(joku, 0, screen, &dstrect); // DRAWING ENDS HERE // finally, update the screen :) SDL_Flip(screen); } // end main loop // free loaded bitmap SDL_FreeSurface(bmp); SDL_FreeSurface(joku); // all is well ;) printf("Exited cleanly\n"); return 0; }
Kääntäjän vastaus on
ld.exe cannot find -lSDL_mixer
1 errors ja sitä rataa
Mitä pitäisi tehdä?
Pitäisi
a) ottaa SDL_mixer pois projektin asetuksista, jos et käytä sitä, tai
b) kopioida tiedosto libSDL_mixer.a kääntäjän lib-hakemistoon.
Kiitos.Vihdoin kaikki lisäkirjastot toimii ja voin siirtää megaprojektini devcpp:n puolelta codeblocksiin. 6 päivää kyselin ja yritin ja vihdoin onnistuu. 7. päivänä ei levätä vaan koodataan......:)
Aihe on jo aika vanha, joten et voi enää vastata siihen.