SDL.h: No such file or directory
Signaler
charline159
charline159
- Messages postés
- 146
- Date d'inscription
- lundi 14 août 2017
- Statut
- Membre
- Dernière intervention
- 4 mars 2021
charline159
- Messages postés
- 146
- Date d'inscription
- lundi 14 août 2017
- Statut
- Membre
- Dernière intervention
- 4 mars 2021
5 réponses
[Dal]
- Messages postés
- 5478
- Date d'inscription
- mercredi 15 septembre 2004
- Statut
- Contributeur
- Dernière intervention
- 3 mars 2021
Salut,
Essaye dans ce cas :
Dal
Essaye dans ce cas :
#include "../include/SDL.h"
Dal
charline159
- Messages postés
- 146
- Date d'inscription
- lundi 14 août 2017
- Statut
- Membre
- Dernière intervention
- 4 mars 2021
Salut, merci pour ta réponse.
J'ai essayé, mais ça m'indique toujours une erreur:
je ne sais vraiment plus quoi faire :/
une autre suggestion ?
J'ai essayé, mais ça m'indique toujours une erreur:
c:/mingw/bin/../lib/gcc/mingw32/6.3.0/../../../libmingw32.a(main.o):(.text.startup+0xa0): undefined reference to `WinMain@16'
collect2.exe: error: ld returned 1 exit status
je ne sais vraiment plus quoi faire :/
une autre suggestion ?
[Dal]
- Messages postés
- 5478
- Date d'inscription
- mercredi 15 septembre 2004
- Statut
- Contributeur
- Dernière intervention
- 3 mars 2021
Cette erreur est une erreur de liaison renvoyée par ld (l'éditeur de liens) et non pas par ton compilateur (gcc je suppose).
Cela signifie que ta compilation s'est bien passée et que ton #include a bien permis au compilateur de trouver ton fichier SDL.h, sinon tu aurais eu une erreur du compilateur.
Tu as donc progressé :-)
Cette erreur de l'éditeur de liens indique une erreur de configuration de ton projet (ou un problème dans ta ligne de commande si tu compiles à la main).
Il va falloir que tu nous en dises plus sur ce que tu fais :
Tu devrais commencer par une code très simple pour tester ton installation.
Cela signifie que ta compilation s'est bien passée et que ton #include a bien permis au compilateur de trouver ton fichier SDL.h, sinon tu aurais eu une erreur du compilateur.
Tu as donc progressé :-)
Cette erreur de l'éditeur de liens indique une erreur de configuration de ton projet (ou un problème dans ta ligne de commande si tu compiles à la main).
Il va falloir que tu nous en dises plus sur ce que tu fais :
- la façon dont tu compiles : utilises-tu un EDI comme Codeblocks ou un autre (si oui, lequel)
- si tu compiles à la main, quelle est la ligne de commande que tu tapes
- il faudra qu'on vérifie que c'est bien un programme "console" que tu fais
- tu devrais poster le code source que tu essayes de compiler pour qu'on comprenne mieux ce que tu fais
Tu devrais commencer par une code très simple pour tester ton installation.
charline159
- Messages postés
- 146
- Date d'inscription
- lundi 14 août 2017
- Statut
- Membre
- Dernière intervention
- 4 mars 2021
J'utilise Visual Studio Code et je compile tout simplement en cliquant sur "Run Code". Mon compilateur est mingw
Le code est le suivant:
à partir du moment où j'enlève la ligne
comment vérifier que c'est un programme console ?
Le code est le suivant:
#include "../include/SDL.h" #include <stdio.h> #include <stdlib.h> #include <string.h> #include <assert.h> int main(int argc,char **argv){ printf("bonjour"); return 0; }
à partir du moment où j'enlève la ligne
#include "../include/SDL.h"tout fonctionne très bien
comment vérifier que c'est un programme console ?
[Dal]
- Messages postés
- 5478
- Date d'inscription
- mercredi 15 septembre 2004
- Statut
- Contributeur
- Dernière intervention
- 3 mars 2021
Ton programme ne met en oeuvre aucune fonction de la SDL. Tu devrais utiliser un programme minimal ouvrant une fenêtre graphique, attendant quelques secondes et refermant cette fenêtre. Cela te permettra de vérifier que ton installation fonctionne.
Je n’utilise pas Visual Studio Code, mais je vais essayer de te donner des indications utiles.
Je suppose que ton MinGW est correctement installé et que gcc est accessible sur le PATH de WIndows ou que tu lances VS Code à partir de l'environnement MinGW.
Comme tu utilises MinGW, tu dois disposer de la SDL2 conçue pour MinGW en obtenant SDL2-devel-2.0.14-mingw.tar.gz (MinGW 32/64-bit) disponible là :
https://www.libsdl.org/download-2.0.php
Disons que tu compiles des binaires en 32 bits. Décompresses ce fichier et extrait le contenu de i686-w64-mingw32\ dans un répertoire de ton choix, par exemple : c:\mingw_dev_lib\SDL2\i686-w64-mingw32\
Note que dans ce cas, tes include pour la SDL2 seront dans c:\mingw_dev_lib\SDL2\i686-w64-mingw32\include et tes binaires de la SDL2 dans c:\mingw_dev_lib\SDL2\i686-w64-mingw32\lib
Disons aussi que tu veux compiler un programme minimal test_sdl.c :
Tes options de compilation devraient ressembler à ceci si elles étaient passées en ligne de commande :
Tu peux éventuellement tester déjà ces options de compilation à partir du terminal de VS Code.
Une fois que tu as vérifié que cela compile sans erreurs et que ton programme test_sdl.exe fonctionne (copie le fichier SDL2.dll dans le répertoire de l'exécutable pour le lancer - il se trouve dans i686-w64-mingw32/bin/), tu peux te créer un Makefile ou utiliser le système de build de Visual Studio Code, avec un tasks.json comprenant ces options :
https://code.visualstudio.com/docs/cpp/config-mingw#_build-helloworldcpp
si tu veux lancer cette compilation en cliquant sur "Run Code" sur VS Code.
Je n’utilise pas Visual Studio Code, mais je vais essayer de te donner des indications utiles.
Je suppose que ton MinGW est correctement installé et que gcc est accessible sur le PATH de WIndows ou que tu lances VS Code à partir de l'environnement MinGW.
Comme tu utilises MinGW, tu dois disposer de la SDL2 conçue pour MinGW en obtenant SDL2-devel-2.0.14-mingw.tar.gz (MinGW 32/64-bit) disponible là :
https://www.libsdl.org/download-2.0.php
Disons que tu compiles des binaires en 32 bits. Décompresses ce fichier et extrait le contenu de i686-w64-mingw32\ dans un répertoire de ton choix, par exemple : c:\mingw_dev_lib\SDL2\i686-w64-mingw32\
Note que dans ce cas, tes include pour la SDL2 seront dans c:\mingw_dev_lib\SDL2\i686-w64-mingw32\include et tes binaires de la SDL2 dans c:\mingw_dev_lib\SDL2\i686-w64-mingw32\lib
Disons aussi que tu veux compiler un programme minimal test_sdl.c :
#include <SDL2/SDL.h> #include <stdio.h> const int SCREEN_WIDTH = 800; const int SCREEN_HEIGHT = 600; int main(int arc, char ** argv) { if (SDL_Init( SDL_INIT_VIDEO ) < 0) { printf("SDL_Init failed: %s\n", SDL_GetError()); } else { SDL_CreateWindow( "SDL2 Demo", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_SHOWN ); SDL_Delay(2000); } return 0; }
Tes options de compilation devraient ressembler à ceci si elles étaient passées en ligne de commande :
gcc test_sdl.c -o test_sdl.exe -Ic:\mingw_dev_lib\SDL2\i686-w64-mingw32\include\SDL2 -Lc:\mingw_dev_lib\SDL2\i686-w64-mingw32\lib -w -Wl,-subsystem,windows -lmingw32 -lSDL2main -lSDL2
Tu peux éventuellement tester déjà ces options de compilation à partir du terminal de VS Code.
Une fois que tu as vérifié que cela compile sans erreurs et que ton programme test_sdl.exe fonctionne (copie le fichier SDL2.dll dans le répertoire de l'exécutable pour le lancer - il se trouve dans i686-w64-mingw32/bin/), tu peux te créer un Makefile ou utiliser le système de build de Visual Studio Code, avec un tasks.json comprenant ces options :
https://code.visualstudio.com/docs/cpp/config-mingw#_build-helloworldcpp
si tu veux lancer cette compilation en cliquant sur "Run Code" sur VS Code.
charline159
- Messages postés
- 146
- Date d'inscription
- lundi 14 août 2017
- Statut
- Membre
- Dernière intervention
- 4 mars 2021
j'ai bien suivi ces étapes pour l'installation de la SDL (path windows, libsld.org, 32 bits, etc.)
j'ai également essayé avec le code que tu proposes (qui permet de générer une fenêtre), voici les résultats que j'ai obtenu:
en faisant
en faisant
et sinon, si je clique sur Run Code, j'obtiens:
je ne vois pas quoi faire de plus...
est-ce qu'il y a quelque chose à configurer côté projet, avec Visual Studio Code ?
j'ai également essayé avec le code que tu proposes (qui permet de générer une fenêtre), voici les résultats que j'ai obtenu:
en faisant
gcc test_sdl.c -o test_sdl.exe -Ic:\mingw_dev_lib\SDL2\i686-w64-mingw32\include\SDL2 -Lc:\mingw_dev_lib\SDL2\i686-w64-mingw32\lib -w -Wl,-subsystem,windows -lmingw32 -lSDL2main -lSDL2j'obtiens:
Au caractère Ligne:1 : 137 + ... ude\SDL2 -Lc:\mingw_dev_lib\SDL2\i686-w64-mingw32\lib -w -Wl,-subsyst ... + ~ Argument manquant dans la liste de paramètres. Au caractère Ligne:1 : 148 + ... c:\mingw_dev_lib\SDL2\i686-w64-mingw32\lib -w -Wl,-subsystem,windows ... + ~ Argument manquant dans la liste de paramètres. + CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException + FullyQualifiedErrorId : MissingArgument
en faisant
gcc test_sdl.c -o test_sdl.exe -Ic:\mingw_dev_lib\SDL2\i686-w64-mingw32\include\SDL2 -Lc:\mingw_dev_lib\SDL2\i686-w64-mingw32\lib -lmingw32 -lSDL2main -lSDL2j'obtiens:
gcc.exe: error: test_sdl.c: No such file or directory
et sinon, si je clique sur Run Code, j'obtiens:
main.c:1:22: fatal error: SDL2/SDL.h: No such file or directory #include <SDL2/SDL.h> ^ compilation terminated.
je ne vois pas quoi faire de plus...
est-ce qu'il y a quelque chose à configurer côté projet, avec Visual Studio Code ?
[Dal]
- Messages postés
- 5478
- Date d'inscription
- mercredi 15 septembre 2004
- Statut
- Contributeur
- Dernière intervention
- 3 mars 2021
j'ai bien suivi ces étapes pour l'installation de la SDL (path windows, libsld.org, 32 bits, etc.)
Tu prends la lib 32 bits si ton MinGW est en 32 bits, si c'est MinGW64 que tu as installé, tu prends la lib 64 bist et tu adaptes les instructions.
Cela indique qu'il n'y a pas de fichier
est-ce qu'il y a quelque chose à configurer côté projet, avec Visual Studio Code
Tu peux, comme je l'ai indiqué, configurer le système de build de Visual Studio Code, avec un tasks.json comprenant les bonnes options si tu veux lancer cette compilation en cliquant sur "Run Code" sur VS Code. Le lien précédemment fournit t'indique :
https://code.visualstudio.com/docs/cpp/config-mingw#_build-helloworldcpp
concrètement, pour toi, si la 2ème ligne de compilation manuelle fonctionne en indiquant le bon emplacement de fichier source .c, cela devrait être quelque chose comme (extrait) :
Je suis sous Linux et il m'est difficile de tester tout cela.
J'ai trouvé ce tutoriel qui pourrait t'être utile :
https://programmer.help/blogs/vscode-sdl2-configuration-tutorial.html
Tu prends la lib 32 bits si ton MinGW est en 32 bits, si c'est MinGW64 que tu as installé, tu prends la lib 64 bist et tu adaptes les instructions.
gcc.exe: error: test_sdl.c: No such file or directory
Cela indique qu'il n'y a pas de fichier
test_sdl.cdans le répertoire courant.
est-ce qu'il y a quelque chose à configurer côté projet, avec Visual Studio Code
Tu peux, comme je l'ai indiqué, configurer le système de build de Visual Studio Code, avec un tasks.json comprenant les bonnes options si tu veux lancer cette compilation en cliquant sur "Run Code" sur VS Code. Le lien précédemment fournit t'indique :
https://code.visualstudio.com/docs/cpp/config-mingw#_build-helloworldcpp
concrètement, pour toi, si la 2ème ligne de compilation manuelle fonctionne en indiquant le bon emplacement de fichier source .c, cela devrait être quelque chose comme (extrait) :
(...)
"command": "C:\\chemin\\vers\\mingw\\bin\\gcc.exe",
"args": [
"-g",
"${file}",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe",
"-Ic:\mingw_dev_lib\SDL2\i686-w64-mingw32\include\SDL2",
"-Lc:\mingw_dev_lib\SDL2\i686-w64-mingw32\lib",
"-lmingw32",
"-lSDL2main",
"-lSDL2"
],
(...)
Je suis sous Linux et il m'est difficile de tester tout cela.
J'ai trouvé ce tutoriel qui pourrait t'être utile :
https://programmer.help/blogs/vscode-sdl2-configuration-tutorial.html