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

Auteur Sujet: [RESOLU] sf::String génèrant un Assertion Failed  (Lu 3708 fois)

0 Membres et 1 Invité sur ce sujet

Shadwk

  • Newbie
  • *
  • Messages: 3
    • Voir le profil
[RESOLU] sf::String génèrant un Assertion Failed
« le: Avril 16, 2012, 10:21:29 pm »
Bonsoir,

Je me permets de vous donner un code minimal qui plante pour une raison que je n'explique pas...
Mon environnement est Visual Studio 2010 et je viens de tester le code ci-dessous avec le dernier snapshot de SFML 2.0 et j'ai toujours mon problème...

J'ai prit le code d'exemple pour la SFML 2. J'ai rajouté une classe contenant un sf::String et un getter retournant le texte du String. Le but au final était d'avoir un input text (ce qui fonctionne bien) le problème vient du fait que je ne peux  pas récupérer avec mon getter le contenu du sf::String...

#include <SFML/Audio.hpp>
#include <SFML/Graphics.hpp>
 
class MaString
{
        private:
                sf::Text textLabel;
        public:
                MaString() { textLabel.setString("AAAAA"); }
                ~MaString() {}

                std::string text() { return textLabel.getString().toAnsiString(); }
};

int main()
{
         //Creation de l'objet
         MaString test;
     //Create the main window
     sf::RenderWindow window(sf::VideoMode(800, 600), "SFML window");
     //Load a sprite to display
     sf::Texture texture;
     if (!texture.loadFromFile("cute_image.jpg"))
         return EXIT_FAILURE;
     sf::Sprite sprite(texture);
     //Start the game loop
     while (window.isOpen())
     {
         //Process events
         sf::Event event;
         while (window.pollEvent(event))
         {
             // Close window : exit
             if (event.type == sf::Event::Closed)
                 window.close();
         }
         //Clear screen
         window.clear();
         //Draw the sprite
         window.draw(sprite);
                 //Essayer de recuperer le string
                 printf("%s\n", test.text().c_str());
         //Update the window
         window.display();
     }
     return EXIT_SUCCESS;
}
 

Pour le moment j'ai résolu mon problème en stockant un std::string et en lui faisant subir tout ce que le sf::String subit en transformation. Mais si je peux arriver à faire mieux avec votre aide pour économiser un peu de mémoire ce serait cool !

Je vous en remercie d'avance :)

Shadwk



« Modifié: Avril 17, 2012, 08:46:30 pm par Shadwk »

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : sf::String génèrant un Assertion Failed
« Réponse #1 le: Avril 16, 2012, 10:24:17 pm »
Et c'est quoi l'erreur ? Ca se passe où ?

Tu as compilé SFML toi-même ?
Laurent Gomila - SFML developer

Shadwk

  • Newbie
  • *
  • Messages: 3
    • Voir le profil
Re : sf::String génèrant un Assertion Failed
« Réponse #2 le: Avril 16, 2012, 10:41:21 pm »
Je viens de recompiler tout de zéro en resuivant le tutorial (comme la première fois) avec le dernier snapshot. Seule l'option BUILD_SHARED_LIBS est coché et il semblerait que cela ne fonctionne pas mieux (J'avais auparavant STATIC_STD_LIBS de coché).

L'erreur en voici une screenshot ci-dessous en pièce jointe. J'ai affiché ce que la console affiche car la ligne "printf("%s\n", test.text().c_str());" fonctionne c'est après que cela se complique visiblement...

[attachment deleted by admin]

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : sf::String génèrant un Assertion Failed
« Réponse #3 le: Avril 17, 2012, 07:51:08 am »
Ok, et bien appuie sur "Recommencer" et vois ce que dit le debugger.

Citer
J'avais auparavant STATIC_STD_LIBS de coché
Je confirme qu'il ne faut pas. Assure-toi bien que tout est recompilé complètement (Rebuild all) après que tu aies changé cette option.
Laurent Gomila - SFML developer

Shadwk

  • Newbie
  • *
  • Messages: 3
    • Voir le profil
Re : sf::String génèrant un Assertion Failed
« Réponse #4 le: Avril 17, 2012, 08:45:43 pm »
C'est bon le problème est résolu !
Merci beaucoup pour ton aide.

Shadwk