Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: sf::RenderWindow fail sans variable d'environnement  (Lu 1871 fois)

0 Membres et 1 Invité sur ce sujet

nes

  • Newbie
  • *
  • Messages: 1
    • Voir le profil
sf::RenderWindow fail sans variable d'environnement
« 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.

janf

  • Newbie
  • *
  • Messages: 45
    • Voir le profil
Re : sf::RenderWindow fail sans variable d'environnement
« Réponse #1 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é.