Bonjour,


Je suis sous windows 10, 64 bits
j'utilise NotePad++ pour écrire mes programmes en C,
je compile avec GCC sous MinGW_W64. dans une fenêtre console Windows (cmd)
j'ai i686-7.2.0-posix-dwarf-rt_v5-rev1 d'installé sur mon PC.

Après m'être lancé dans la programmation en C , je souhaite m'initier à l'utilisation de la bibliothèque SDL.
Pour compiler j'utilise le compiler gcc de MinGW (dans le cmd pour compiler mon code je tape habituellement "gcc monfichier.c -o monfichier.exe"
cela fonctionne parfaitement.

Je souhaite donc faire la même chose pour mon code en C en utilisant la librairie SDL.
J'ai suivi des tutos à la lettre mais, pour moi, les explications ne sont jamais assez claire ...

j'ai téléchargé le fichier : SDL2-devel-2.0.3-mingw.tar.gz
Je l'ai décompressé, et je trouve plusieurs fois la même chose dans des répertoires différents.

je trouve :
Un premier répertoire : SDL2-devel-2.0.3-mingw, et dans ce répertoire un répertoire : SDL2-2.0.3

Puis, dans le répertoire SDL2-2.0.3, je trouve des répertoires :

i686-w64-mingw32
include
lib
test
x86_64-w64-mingw32

Si j'ouvre ce dernier (par exemple : x86_64-w64-mingw32), je trouve
bin
include
lib
share

Si j'ouvre i686-w64-mingw32 je trouve les mêmes répertoire que ceux de x86_64-w64-mingw32

Je me suis créé sur mon bureau un repertoire qui se nomme Projet1
j'ai mis les répertoires bin include et lib (de x86_64-w64-mingw32) dedans projet1.
j'y ai mis mon programme ouvrefenetre.c

je lance ma console windows et je me mets sur C:\Users\JeanLouis\Desktop\Projet1>
en lançant mon fichier .bat qui lance la console, je passe les commande suivante :
echo off
set PATH=C:\Program Files (x86)\mingw-w64\i686-7.2.0-posix-dwarf-rt_v5-rev1\mingw32\bin;%PATH%
cd "C:\Users\JeanLouis\Desktop\projet1"
"C:\WINDOWS\system32\cmd.exe"

je tape la commande suivante : gcc ouvrirfenetre.c -L./lib -I./include -lSDL2-2.0

j'ai l'erreur :
C:/Program Files (x86)/mingw-w64/i686-7.2.0-posix-dwarf-rt_v5-rev1/mingw32/bin/../lib/gcc/i686-w64-mingw32/7.2.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -lSDL2-2.0
collect2.exe: error: ld returned 1 exit status

j'ai bien compris que j'allais chercher les .h dans include, les .a dans lib
je ne comprends pas le -lSDL2-2.0 que je mets dans ma commande GCC.

Voici mon programme ouvrefenetre.c
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
#include <SDL2/SDL.h>
#include <stdio.h>
 
int main(int argc, char** argv)
{
    /* Initialisation simple */
    if (SDL_Init(SDL_INIT_VIDEO) != 0 )
    {
        fprintf(stdout,"Échec de l'initialisation de la SDL (%s)\n",SDL_GetError());
        return -1;
    }
 
    {
        /* Création de la fenêtre */
        SDL_Window* pWindow = NULL;
        pWindow = SDL_CreateWindow("Ma première application SDL2",SDL_WINDOWPOS_UNDEFINED,
                                                                  SDL_WINDOWPOS_UNDEFINED,
                                                                  640,
                                                                  480,
                                                                  SDL_WINDOW_SHOWN);
 
        if( pWindow )
        {
            SDL_Delay(3000); /* Attendre trois secondes, que l'utilisateur voit la fenêtre */
 
            SDL_DestroyWindow(pWindow);
        }
        else
        {
            fprintf(stderr,"Erreur de création de la fenêtre: %s\n",SDL_GetError());
        }
    }
 
    SDL_Quit();
 
    return 0;
}
Merci de m'aider.