Partage
  • Partager sur Facebook
  • Partager sur Twitter

Erreur chargement de fichier .png

Sujet résolu
    11 décembre 2022 à 14:36:07

    Bonjour,

    J'ai un problème de chargement de fichiers png pour mon projet. Le code est bon, c'est sûr car sur mon autre pc où j'ai le projet ça fonctionne nickel.

    Du coup le chemin relatif est également bon pour la même raison que la précédente. J'ai aussi essayé avec un chemin absolu mais ça n'a rien donné. Les noms de fichiers sont corrects. Malgré tout ça il n'y a aucune image qui se charge alors que j'ai également des fichiers txt qui eux se chargent nickel.

    Il y a un truc que j'ai remarqué c'est qu'il y a un message d'erreur dans la console qui dit <<failed to load ">>. La différence qu'il y a entre mon pc qui arrive à charger correctement les images et celui qui n'y arrive pas c'est que je suis obligé de démarrer VS en mode administrateur sur ce dernier. Je sais pas si ça vous change grand chose de savoir ça mais on sait jamais.

    Je vous laisse un screen de la console et quelques bouts de code qui sont en rapport avec le chargement des images.

    #include "GestionnaireRessources.h"
    
    
    std::unordered_map<std::string_view, sf::Texture> GestionnaireRessources::ressources{};//création tableau de pairs pour gestion dynamique des textures des sprites en mémoire
    
    sf::Texture const& GestionnaireRessources::getRessource(std::string_view const& chemin)
    {
    	auto resultat = ressources.find(chemin);
    	if (resultat == std::end(ressources))
    	{
    		if (!ressources[chemin].loadFromFile(chemin.data()))
    		{
    			std::cerr << "Erreur : impossible de charger la texture " << chemin << std::endl;
    		}
    		ressources[chemin].setSmooth(true);
    		return ressources[chemin];
    	}
    	return resultat->second;
    }
    Curseur::Curseur(Interface& interface_ptr, Coordonnees const& position_ptr) : Bouton{position, "ressources/sprites/Curseur.png" }, interface {interface_ptr}

    Le dernier bout de code c'est un exemple d'un de mes fichiers image qui ne veulent pas se charger. Je précise que mon dossier ressources se trouve dans le même dossier que mes .cpp et mes .h.

    Je vous avoue que je dois le présenter demain donc c'est plutôt urgent et ça commence à vraiment me stresser. 

    Merci à vous !

    ----------------------------------------------/EDIT\------------------------------------------------

    Bon, du coup j'ai réussi à trouver la solution. Pour ceux qui auront le même problème :

    Personnellement j'utilise la SFML et Visual Studio pour ce projet. Dans les propriétés de mon projet, en mode debug et X64, dans C/C++ > Editeur de liens > dépendances supplémentaires : j'ai indiqué les mauvais dll. Il fallait que j'indique par exemple SFML-graphics-d.lib au lieu de SFML-graphics.lib.

    Voilà, bonne journée/soirée !

    -
    Edité par Jorabgs 11 décembre 2022 à 15:27:20

    • Partager sur Facebook
    • Partager sur Twitter
      11 décembre 2022 à 16:35:01

      Salut,

      Techniquement parlant, ton code est ok.

      Par contre, coté conception, ce n'est pas bon.
      En effet, ta fonction membre viole le SRP et ne fait pas ce qu'elle annonce.
      Son but est d'obtenir une texture depuis le conteneur interne de la classe GestionnaireRessource.
      Hors, elle s'occupe également de charger la texture.
      Il conviendra de séparer ces 2 responsabilités.

      Sans parler du fait que charger des textures au dernier moment, c'est catastrophique pour les performances.

      • Partager sur Facebook
      • Partager sur Twitter
        11 décembre 2022 à 16:49:30

        >Il fallait que j'indique par exemple SFML-graphics-d.lib au lieu de SFML-graphics.lib.

        Votre solution est bonne mais vous l'appliquez vraisemblablement de travers.

        Le "d" en plus c'est pour DEBUG. Donc utilisez "SFML-graphics.lib" pour les configurations Release et "SFML-graphics-d.lib" pour les configurations Debug.

        -
        Edité par bacelar 10 janvier 2023 à 17:59:16

        • Partager sur Facebook
        • Partager sur Twitter
        Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
          10 janvier 2023 à 15:11:01

          Salut, 

          Désolé, je réponds un peu tard.

          Comme je débute et que j'apprends en autodidacte, je suis pas au courant de certaines normes et celle du SRP en faisait partie. Du coup, à l'avenir je ferai en sorte de respecter ça. Merci ! 

          Du coup comment je devrais m'y prendre pour charger mes textures ? Parce que actuellement, j'appelle directement cette méthode dans le constructeur de mes objets avec sprite.setTexture(GestionnaireRessources::getRessource(...). Je sais même pas si c'est bien de faire comme ça haha

          > Le "d" eb plus c'est pour DEBUG. Donc utilisez "SFML-graphics.lib" pour les configurations Release et "SFML-graphics-d.lib" pour les configurations Debug.

          Pour le coup je suis au courant et quand j'ai eu l'erreur, j'avais mis les dll en mode "toutes configurations" ce qui est mal. J'ai donc configuré correctement mes paramètres pour le mode DEBUG et RELEASE :) 

          En tout cas merci beaucoup pour vos réponses ! 

          -
          Edité par Jorabgs 10 janvier 2023 à 15:14:05

          • Partager sur Facebook
          • Partager sur Twitter

          Erreur chargement de fichier .png

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown