Forum de la communauté SFML
Aide => Graphique => Discussion démarrée par: 0100100001100001 le Septembre 01, 2017, 10:17:17 pm
-
Bonjour, bonsoir,
Je poste ce topic car j'ai besoin d'aide par rapport au DLL graphics-2. Une fois que j'ai installé sur code::blocks SFML, j'ai essayé le code de test. Quand je le lance sur Code::Blocks, aucun problème, je peux avoir accès au graphismes (un rond vert). Mais le problème vient lorsque j'execute le programme via l'explorateur de windows (par exemple : C:\user\desktop\programme\bin\release\programme.exe), un code d'erreur surgît : Le point d'entrée de procédure _ZSt24_throw_out_of_range_fmtPKcz est introuvable dans la bibliothèque de liens dynamiques c:\user\n\desktop\prog\bin\debug\sfml-graphics-2.dll. J'ai à peu près le même problème avec le dossier debug mais c'est sur system.dll. Donc, je ne vois pas le problème : mal installation de SFML ou pas de chance ?
Je vous remercie de vos réponses
-
Salut,
Il faut que tu places les dll ton dépends ton programme à côté de celui-ci. Si tu lances l'executable compilé en mode debug tu as besoin de la suite sfml-module-d.dll, si c'est celui en mode release il te faut sfml-module.dll, il te faudra de plus les dll liées à ton compilateur.
PS : tu trouves les dll de SFML dans le dossier lib de ton installation SFML et les dll de ton compilateur dans le dossier bin de son installation (pour MinGW)
Cordialement G
-
Les DLL dont j'ai besoin (sfml-window-2, sfml-system-2 , sfml-graphics-2 et Openal) sont bien mis dans le dossier de l’exécutable. Donc normalement le problème ne vient pas de ça. De plus, lorsque j'exécute sur code::blocks, ça fonctionne, mais pas sur l'explorateur Windows. A savoir que je n'ai pas vu de DLL dans le dossier lib mais seulement dans le dossier bin. A savoir que, selon process explorer, les DLL sont bien chargés.
-
C'est pas simplement que, lorsque tu lances sous CodeBlocks, il prend en compte le chemin source du projet OU le chemin bin/Debug (je me rappelle plus), et quand tu le lances par l'explorateur il ne prend en compte que le chemin du dossier duquel tu lances le programme ?
Ou encore, les chemins des libs sont peut-être (je sais même pas si c'est possible) indiqués dans l'exécutable lors de la compilation.
Bref, pour résoudre le problème place les dll à la fois dans le dossier racine de ton projet ET dans le dossier de ton exécutable, comme ça tu dois pouvoir le lancer des deux façons.
Sous Linux il y a moyen d'indiquer l'emplacement des librairies au système, de sorte que le programme se lance quelque soit l'emplacement depuis lequel on l'appelle, sans avoir à copier les fichiers de librairies, qui résident tranquillement dans le dossier d'installation de la SFML. Peut-être est-ce possible sous Windows aussi, je ne sais pas ! Mais probablement.