Forum de la communauté SFML

Aide => Fenêtrage => Discussion démarrée par: nes le Décembre 19, 2016, 05:23:49 pm

Titre: sf::RenderWindow fail sans variable d'environnement
Posté par: nes le Décembre 19, 2016, 05:23:49 pm
Bonjour !

Je "m'amuse" à lancer mon programme utilisant la SFML avec "env -i"(sur linux), et je remarque que mon programme se stoppe au moment où j'appelle le constructeur sf::RenderWindow(sf::VideoMode, const sf::String &).

J'essaie donc de catch une éventuelle erreur que sf::RenderWindow aurait lancée, malheuresement sans succès :/

Y'aurait-il une manière de gérer l'absence de variable d'environnement(pour éviter que mon programme Abort), sans appeler std::getenv ?

Merci d'avance.
Titre: Re : sf::RenderWindow fail sans variable d'environnement
Posté par: janf le Mars 19, 2017, 04:00:36 pm
Sur Linux on aime utiliser le principe de bibliothèques partagées.
Si tu tapes 'ldd ton_executable' tu verras toutes les bibliothèques dont ton programme a besoin pour fonctionner.

Il est fort probable que ton programme se serve de certains chemins déclarés dans des variables d'environnement pour aller chercher ces bibliothèques. Car il y a plusieurs façon de faire fonctionner un programme qui a besoin de ces bibliothèques, notamment, si on veut en indiquer le chemin au moment de l'exécution, ça peut passer par les variables LD_LIBRARY_PATH et/ou LD_RUN_PATH. Ces variables sont-elles définies dans ton environnement habituel ?

Je pense que ton programme plante car il ne trouve pas la classe, donc puisqu'elle n'existe pas elle ne peut pas lever d'exception.

La solution serait de compiler ton programme avec des bibliothèques statiques, ou peut-être peux-tu passer certaines options au linker/compilateur pour que lors de l’exécution, le programme aille chercher ces bibliothèques dans son propre répertoire racine, dans lequel tu les auras copié.