Salut tout le monde, Je me suis mis à la SDL2 pendant mes vacances afin de pouvoir faire un peu plus que de la console dans mes programmes C. Étant sur Linux, l’installation et la configuration de la SDL2 pour Code::Blocks était plutôt simple mais je me retrouve confronté à certains problèmes compliqués à régler du fait de mes connaissances encore faible de l’environnement Linux.
1)J’ai le code suivant
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 | //preprocessor #include <SDL2/SDL.h> #include <stdio.h> #include <stdlib.h> //global variables const int SCREEN_WIDTH = 1280; const int SCREEN_HEIGHT = 720; SDL_Window *mainWindow = NULL; SDL_Surface *mainWindowSurface = NULL; SDL_Surface *splashIMG = NULL; //prototypes void cleanse(); int init(); int loadIMG(); int main( int argc, char* args[] ) { if(init() != 0) { printf("Echec de l'initialisation\n"); } else { if(loadIMG() != 0) { printf("Echec du chargement de l'image\n"); } else { SDL_BlitSurface(splashIMG, NULL, mainWindowSurface, NULL); SDL_UpdateWindowSurface(mainWindow); } } cleanse(); return 0; } int init() { if(SDL_Init(SDL_INIT_VIDEO) > 0) { printf("Probleme a l'initialisation de la SDL\n"); return -1; } else { mainWindow = SDL_CreateWindow( "SDL Image Tutorial", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_SHOWN ); if(mainWindow == NULL) { printf("Probleme a la creation de la fenetre\n"); return -1; } else { mainWindowSurface = SDL_GetWindowSurface(mainWindow); return 0; } } } void cleanse() { SDL_FreeSurface(splashIMG); splashIMG = NULL; SDL_DestroyWindow(mainWindow); mainWindow = NULL; SDL_Quit(); } int loadIMG() { splashIMG = SDL_LoadBMP("Images/HelloWorld.bmp"); if(splashIMG == NULL) { printf("Impossible d'ouvrir l'image: code d'erreur %s\n", SDL_GetError()); return -1; } return 0; } ` |
Le code compile sans problème mais il est incapable de charger l’image qui se trouve pourtant bel et bien dans un dossier Images dans le dossier où se trouve l’exécutable du programme une fois compilé (bin/Debug). À partir de là il m’est venu l’hypothèse que le fait d’exécuter mon programme depuis Code::Blocks faisait qu’il lui était impossible de trouver ledit dossier car il était peut-être exécuté à un endroit propre à Code::Blocks. Il m’est venu deux idées pour régler ce problèmes, les deux se trouvant malheureusement impossible à résoudre
2) Je me suis dit qu’en exécutant le programme hors de Code::Blocks, il trouverait le dossier et pourrait charger l’image. Le souci c’est qu’il manque le fichier SDL.dll (ou peut importe son équivalent avec SDL2) sans lequel mon programme ne peut pas se lancer et que je n’ai absolument aucune idée de où je peux le trouver sur ma machine parce que j’ai installé les fichiers de la SDL2 en ligne de commande et que je n’ai aucune idée de où ça s’est installé.
3)J’ai donc voulu ajouter un dossier au projet dans Code::Blocks mais en faisant un clic droit sur l’icône du projet et en ajoutant un dossier virtuel, je n’arrive rien à ajouter à ce dossier même avec un glisser-déposer. Si, avec le même clic droit au même endroit je clique sur ajouter un fichier et que j’ajoute le fichier, toute l’arborescence menant au fichier va être importée (et j’ai même pas cliqué sur ajouter des fichiers par récurrence) ce qui est pas du tout pratique
Dans le meilleur des cas j’aimerais régler les trois problèmes mais si qqun pouvait m’aider à en résoudre au moins un ça me permettrait au moins de continuer le cours de SDL2 que j’ai trouvé en attendant que les autres problèmes trouvent une résolution
Merci