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

Auteur Sujet: [Résolu]Problème .. inconnu ?  (Lu 1335 fois)

0 Membres et 1 Invité sur ce sujet

yhu420

  • Jr. Member
  • **
  • Messages: 75
    • Voir le profil
    • E-mail
[Résolu]Problème .. inconnu ?
« le: Février 21, 2015, 05:41:31 pm »
Bonjour tout le monde,
Je n'arrive pas à comprendre la source de mon problème, tout simplement, ce n'est pas même forcément lié à SFML, je n'ai aucune idée d'où l'erreur vient...
Vous remarquerez que j'ai pété un plomb avec le debugger, et que j'ai donc débuggé comme un bleu à coup de cerr  ;D. Assez parlé, voila le code
//Dans Menu.hpp

virtual void draw(sf::RenderTarget &target, sf::RenderStates states) const
        {
                if(isAtMain)
                {
                        //...
                        std::cerr << "0 - mainvessel exists : " << (bool)mainVessel;
                        target.draw(*mainVessel);
                        std::cerr << "1";
                        target.draw(*Play);
                        std::cerr << "2";
                        //...

protected:
FullSprite *mainVessel;
};
 
Dans fullsprite.hpp
class FullSprite : public sf::Drawable //Used to be a struct, that's why it is not, well, traditional
{
public:
        virtual void draw(sf::RenderTarget &target, sf::RenderStates states) const
        {
                target.draw(*m_sprite); //m_sprite est un sf::sprite
                std::cerr << "sprite exists: " << (bool)m_sprite;
        }
 

Pour expliquer tout ca: la console affiche "mainvessel exist: 1", ce qui signifie que l'instruction executée est bien celle désirée. L'instruction suivante ( target.draw(*mainVessel);) va être exécutée. Pour voir plus en détail les instructions suivantes, il faut donc se rendre dans la méthode draw de FullSprite. Les deux lignes qui constituent cette méthode sont vien exécutées, la console indique que le sprite existe.
A présent, la prochaine instruction qui doit être exécutée est
std::cerr << "1";
si je ne me trompe pas, pas d'erreur jusqu'ici, non?
Eh bien non, mon programme crashe entre les deux dernières instructions, visual studio m'indiquant en chemin :
Aucun symbole n'a été chargé: /*bla bla*/
Emplacement d'origine: C:\Users\monNom\Projets\SFML\DatBlaster\Release\sfml-graphics-2.dll

Je trouve cela étrange puisque j'ai déjà réussi à faire tourner mon programme sans soucis, les modifications dernières n'ayant aucun rapport avec cette partie du code.
Je suis sous Windows 7 x64 avec SFML 2.2.
Dites moi si vous avez une idée, ou simplement besoin de plus d'infos
Merci d'avance
« Modifié: Février 22, 2015, 06:57:28 pm par yhu420 »

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re : Problème .. inconnu ?
« Réponse #1 le: Février 21, 2015, 05:52:53 pm »
1. Passe en configuration Debug pour debugger...
2. Utilise ton debugger
3. Si tu ne trouves toujours pas, donne nous les infos qu'il te donne
Laurent Gomila - SFML developer

yhu420

  • Jr. Member
  • **
  • Messages: 75
    • Voir le profil
    • E-mail
Re : Problème .. inconnu ?
« Réponse #2 le: Février 22, 2015, 06:56:39 pm »
Merci beaucoup de ta réponse plutot vague, en rebuildant en mode debug mon programme, j'ai trouvé la source de mon problème! C'est tout simplement que j'avais commencé mon projet avec SFML 2.1, j'ai mis a jours SFML vers 2.2, mais j'ai oublié de remplacer les DLL!
Merci à toi pour ton aide, encore une fois  8)