Bonsoir,
Je rencontre des problèmes pour exécuter un programme SFML correctement compilé. Je vais tout d'abord donner les différentes configurations de mon ordinateur, avant de vous dire ce que j'ai déjà fait, et puis enfin, vous montrer ce que j'obtiens.
Configuration :
Environnement --> Windows 10 64 bits
Compilateur --> Voici ce que j'obtiens lorsque j'exécute la commande
g++ -v dans le terminal de commande (le compilateur est donc bien dans la variable
PATH) :
Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=C:/mingw32/bin/../libexec/gcc/i686-w64-mingw32/7.1.0/lto-wrapper.exe
Target: i686-w64-mingw32
Configured with: ../../../src/gcc-7.1.0/configure --host=i686-w64-mingw32 --build=i686-w64-mingw32 --
target=i686-w64-mingw32 --prefix=/mingw32 --with-sysroot=/c/mingw710/i686-710-posix-dwarf-rt_v5-
rev0/mingw32 --enable-shared --enable-static --disable-multilib --enable-languages=c,c++,fortran,lto --
enable-libstdcxx-time=yes --enable-threads=posix --enable-libgomp --enable-libatomic --enable-lto --
enable-graphite --enable-checking=release --enable-fully-dynamic-string --enable-version-specific-
runtime-libs --enable-libstdcxx-filesystem-ts=yes --disable-sjlj-exceptions --with-dwarf2 --disable-
libstdcxx-pch --disable-libstdcxx-debug --enable-bootstrap --disable-rpath --disable-win32-registry --
disable-nls --disable-werror --disable-symvers --with-gnu-as --with-gnu-ld --with-arch=i686 --with-
tune=generic --with-libiconv --with-system-zlib --with-gmp=/c/mingw710/prerequisites/i686-w64-
mingw32-static --with-mpfr=/c/mingw710/prerequisites/i686-w64-mingw32-static --with-
mpc=/c/mingw710/prerequisites/i686-w64-mingw32-static --with-isl=/c/mingw710/prerequisites/i686-
w64-mingw32-static --with-pkgversion='i686-posix-dwarf-rev0, Built by MinGW-W64 project' --with-
bugurl=http://sourceforge.net/projects/mingw-w64 CFLAGS='-O2 -pipe -fno-ident -I/c/mingw710/i686-
710-posix-dwarf-rt_v5-rev0/mingw32/opt/include -I/c/mingw710/prerequisites/i686-zlib-static/include -
I/c/mingw710/prerequisites/i686-w64-mingw32-static/include' CXXFLAGS='-O2 -pipe -fno-ident -
I/c/mingw710/i686-710-posix-dwarf-rt_v5-rev0/mingw32/opt/include -I/c/mingw710/prerequisites/i686-
zlib-static/include -I/c/mingw710/prerequisites/i686-w64-mingw32-static/include' CPPFLAGS=' -
I/c/mingw710/i686-710-posix-dwarf-rt_v5-rev0/mingw32/opt/include -I/c/mingw710/prerequisites/i686-
zlib-static/include -I/c/mingw710/prerequisites/i686-w64-mingw32-static/include' LDFLAGS='-pipe -fno-
ident -L/c/mingw710/i686-710-posix-dwarf-rt_v5-rev0/mingw32/opt/lib -
L/c/mingw710/prerequisites/i686-zlib-static/lib -L/c/mingw710/prerequisites/i686-w64-mingw32-static/lib
-Wl,--large-address-aware'
Thread model: posix
gcc version 7.1.0 (i686-posix-dwarf-rev0, Built by MinGW-W64 project)IDE utilisé --> Visual Studio Code 1.13.1
Arborescence du projet --> Le projet est organisé ainsi :
-[Dossier].vscode (Ce dossier contient différents fichiers de configuration de Visual Studio Code, je doute qu'ils soient à l'origine de mon problème alors je ne les poste pas)
-[Dossier]bin -main.exe (L'exécutable qui pose problème)
-sfml-graphics-2.dll (une copie de la dll se trouvant dans
C:\SFML_build\lib, j'explique tout ça plus loin)
-sfml-system-2.dll (idem)
-sfml-window-2.dll (idem)
-main.cpp (le code source du projet que je détaillerai plus loin)
-makefile (le fichier de configuration pour compiler mon projet, détaillé plus loin)
Ce que j'ai fait :
1) J'ai téléchargé le code source de SFML en cliquant sur le bouton suivant à l'URL
https://www.sfml-dev.org/download/sfml/2.4.2/index-fr.php :
2) J'ai extrait le contenu de l'archive téléchargée dans
C:\SFML-sources3) J'ai configuré SFML avec Cmake-gui, tel que suit (conformément au tutoriel) :
4) J'ai lancé la commande
mingw32-make à partir du terminal de commande dans
C:\SFML_build, ce qui semble avoir fonctionné :
5) J'ai copié les fichiers
sfml_window-2.dll, sfml-system-2.dll et sfml-graphics.dll, situés dans
C:\SFML_build\lib dans le dossier
bin de mon projet.
6) J'ai fait le fichier
makefile de mon projet, dont voici le contenu :
CC=g++
EXEC=main
INCLUDES=-isystemC:\SFML-sources\include
LIBSPATH=-LC:\SFML_build\lib
LIBS=-lsfml-main -lsfml-graphics -lsfml-window -lsfml-system
EXEPATH=bin/
CCoptions=-Wall -Wextra -Wcast-qual -Wcast-align -Wconversion -Wdouble-promotion -Wold-style-cast -Woverloaded-virtual -Weffc++ -O2 -s -std=c++17 $(INCLUDES) $(LIBSPATH) $(LIBS)
all: $(EXEC)
main: main.o
$(CC) -o $(EXEPATH)$@ $^ $(CCoptions)
main.o: main.cpp
$(CC) -o $@ -c main.cpp $(CCoptions)
clean:
del /F /S /Q *.o
7) J'ai fait le fichier main.cpp, dont voici le contenu :
#include <SFML/Window.hpp>
int main()
{
sf::Window window(sf::VideoMode(800, 600), "My window");
while (window.isOpen())
{
sf::Event event;
while (window.pollEvent(event))
{
if (event.type == sf::Event::Closed)
window.close();
}
}
return 0;
}
8 ) J'ai compilé en utilisant le fichier
makefile.
Le problème :
Le problème est lorsque j'essaie de lancer le fichier
main.exe situé dans le dossier
bin, j'obtiens 3 fenêtres de dialogue d'erreur, dans cet ordre :
1)
2)
3)
J'ai déjà pas mal cherché de mon côté d'où le problème pouvait venir. J'ai cru comprendre que cela pouvait être dû au fait d'une incompatibilité entre la version des dll et la version du compilateur. Je pensais cependant que compiler SFML "soi-même" (en passant par Cmake-gui) aurait résolu le problème.
Merci d'avance pour vos réponses, j'ai essayé d'apporter le maximum d'informations utiles mais s'il en manque, n'hésitez pas à me le faire signaler.
Beafantles