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

Auteur Sujet: [Résolu][SFML 2.0] Crash à la compilation sans message d'erreur  (Lu 2923 fois)

0 Membres et 1 Invité sur ce sujet

Waxabee

  • Newbie
  • *
  • Messages: 11
    • Voir le profil
[Résolu][SFML 2.0] Crash à la compilation sans message d'erreur
« le: Septembre 17, 2012, 12:45:38 am »
Bonjour.

J'ai essayé un exemple de code tout à l'heure sur mon projet, en prenant soin de remplacer toutes les variables par les miennes et tout. J’exécute le code, et le programme s'ouvre et se referme tout de suite. Je me dis, bon c'est pas grave, j'ai qu'à l'effacer. De toute façon, je n'avais rien modifié d'autre et le code faisait 3 lignes. Je le retire, je compile et là le programme fait la même chose. ??? Il ferme et me met aucun message d'erreur. J'ai donc vérifié l'intégrité du code du programme, mais pourtant, avant que je mette le bout de code, tout allait très bien. Alors j'essaye le débuggeur et il me dit qu'il peut rien faire si le programme est fermé, donc il s'arrête bêtement.  :( Ça fait 30 minutes que je cherche comme un débile sur internet mais je trouve rien, alors je demande votre aide. Je ne peux pas fournir de code minimal parce que j'ai aucune idée de qu'est-ce qui fait arrêter le programme. Par contre, voici le code que j'ai testé:
        lightSprite.setPosition(0, 0);

        Vector2i curPos = mouse.getPosition();
        Vector2f lightPos = window.convertCoords(curPos) - lightSprite.getPosition();

        float angle = atan2(lightPos.y, lightPos.x) * 180.f / 3.14159265f;
        lightSprite.setRotation(angle);

Comme j'ai dit, même en le retirant, le programme crash, alors je sais plus du tout quoi faire.  :'(

Merci!
« Modifié: Septembre 18, 2012, 12:52:11 pm par Waxabee »

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : [SFML 2.0] Crash à la compilation sans message d'erreur
« Réponse #1 le: Septembre 17, 2012, 07:56:44 am »
Fais un "rebuild". Redémarre ton PC. Si le problème persiste, apprend à utiliser ton debugger correctement, ce n'est pas la seule fois où ça te sera utile ;)
Laurent Gomila - SFML developer

Waxabee

  • Newbie
  • *
  • Messages: 11
    • Voir le profil
Re : [SFML 2.0] Crash à la compilation sans message d'erreur
« Réponse #2 le: Septembre 17, 2012, 01:16:28 pm »
Merci pour ta réponse. J'ai encore essayé de rebuild et de redémarrer (je l'avais déjà essayé) mais le programme fait la même chose. Pour le débuggeur, "Produce debugging symbols [-s]" était déjà activé. Quand je le lance, il ouvre le programme. Ce dernier se referme en ~1 sec et je peux cliquer sur les icônes du débuggeur mais il s'arrête tout de suite après. Il ne me montre pas où il est rendu dans le code et les breakpoints ne marchent pas.

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : [SFML 2.0] Crash à la compilation sans message d'erreur
« Réponse #3 le: Septembre 17, 2012, 01:19:15 pm »
Dans ce cas peut-être que ton programme s'arrête proprement (i.e. c'est le code qui le fait s'arrêter), tu as vérifié ça ?

Sinon tu peux toujours faire une exécution pas à pas en partant du début, tu verras bien à quel moment il s'arrête.

En tout cas tu t'imagines bien qu'on ne peut t'aider, en voyant un petit morceau de code qui ne fait même plus partie de ton programme :-\
Laurent Gomila - SFML developer

Waxabee

  • Newbie
  • *
  • Messages: 11
    • Voir le profil
Re : [SFML 2.0] Crash à la compilation sans message d'erreur
« Réponse #4 le: Septembre 18, 2012, 01:27:47 am »
Dans ce cas peut-être que ton programme s'arrête proprement (i.e. c'est le code qui le fait s'arrêter), tu as vérifié ça ?

Oui, enfin avec des cout (comme tu dit de ne pas faire dans ton tuto  ;D ) et même si je met le cout juste avant le return, il apparaît dans la console.


Sinon tu peux toujours faire une exécution pas à pas en partant du début, tu verras bien à quel moment il s'arrête.

Avec le débuggeur? Si oui, et bien impossible de le faire marcher donc...  :(


En tout cas tu t'imagines bien qu'on ne peut t'aider, en voyant un petit morceau de code qui ne fait même plus partie de ton programme :-\

Voilà le main: (la quasi-totalité du programme se trouve dedans, les autres fichiers n'étant qu'une classe hérité de sf::Sprite)

#include <iostream>
#include <SFML/Graphics.hpp>
#include "Entity.h"
#include "Math.h"

#define WINDOW_WIDTH  1360
#define WINDOW_HEIGHT 768

using namespace std;
using namespace sf;

int main()
{
    int xWindow(WINDOW_WIDTH), yWindow(WINDOW_HEIGHT);
    Vector2f middleScreen(xWindow/2, yWindow/2);
    Vector2f posPlayer(0, 0);
    Vector2f halfSize(WINDOW_WIDTH, WINDOW_HEIGHT);

    RenderWindow window(VideoMode(WINDOW_WIDTH, WINDOW_HEIGHT), "The Walk", Style::Fullscreen);
    Keyboard keyboard;
    Font font;
    font.loadFromFile("Ressources/Textures/arial.ttf");
    Texture playerUp, enemy, ground, tree, light;
    Entities playerEntity, goblinEntity(30, 0, "Goblin", Vector2f(0, 0));
    Sprite groundSprite, treeSprite;//, lightSprite;

    Text debug;
    debug.setFont(font);
    debug.setString("The Walk - Prototype");
    debug.setPosition(10, 5);
    debug.setCharacterSize(20);
    debug.setColor(Color::White);

    window.setMouseCursorVisible(true);
    window.setVerticalSyncEnabled(true);

    //***************************************************
    // TEXTURES LOADING BEG.
    //***************************************************

    if(!playerUp.loadFromFile("Ressources/Textures/playerUp.png"))
        cerr << "Can't load player texture";
    else
    {
        playerEntity.setTexture(playerUp);
    }

    if(!enemy.loadFromFile("Ressources/Textures/enemy.png"))
        cerr << "Can't load enemy texture";
    else
    {
        goblinEntity.setTexture(enemy);
    }

    if(!ground.loadFromFile("Ressources/Textures/ground.png"))
        cerr << "Can't load ground texture";
    else
    {
        groundSprite.setTexture(ground);
    }

    if(!tree.loadFromFile("Ressources/Textures/tree.png"))
        cerr << "Can't load tree texture";
    else
    {
        treeSprite.setTexture(tree);
        treeSprite.setPosition(100, 100);
    }

    /*if(!light.loadFromFile("Ressources/Textures/light.png"))
        cerr << "Can't load tree texture";
    else
    {
        lightSprite.setTexture(light);
        lightSprite.setColor(Color(255, 255, 255, 40));
    }*/



    //***************************************************
    // TEXTURES LOADING END
    //***************************************************

    while (window.isOpen())
    {
        Event event;
        while (window.pollEvent(event))
        {
            if (event.type == Event::Closed)
                window.close();

            if((event.type == Event::KeyPressed) && (event.key.code == Keyboard::Escape))
            {
                return EXIT_SUCCESS;
            }
        }

        if(keyboard.isKeyPressed(Keyboard::W))
        {
            posPlayer = playerEntity.movePlayer(NORTH);
        }

        if(keyboard.isKeyPressed(Keyboard::A))
        {
            posPlayer = playerEntity.movePlayer(WEST);
        }

        if(keyboard.isKeyPressed(Keyboard::S))
        {
            posPlayer = playerEntity.movePlayer(SOUTH);
        }

        if(keyboard.isKeyPressed(Keyboard::D))
        {
            posPlayer = playerEntity.movePlayer(EAST);
        }

        View view(Vector2f(posPlayer.x+32, posPlayer.y+32), halfSize);

                          // LE CODE QUE J'AI AJOUTÉ SE TROUVAIT ICI
 
        window.setView(view);
        window.clear(Color::Black);
        window.draw(groundSprite);
        window.draw(playerEntity);
        window.draw(treeSprite);
        //window.draw(lightSprite);


        window.setView(window.getDefaultView()); // HUD
        window.draw(debug);
        window.display();

        return 0;
    }
}
 

Merci beaucoup pour votre aide!  :)

victorlevasseur

  • Full Member
  • ***
  • Messages: 206
    • Voir le profil
Re : [SFML 2.0] Crash à la compilation sans message d'erreur
« Réponse #5 le: Septembre 18, 2012, 07:06:05 am »
Salut,
Tu as mis le return 0; dans la boucle while, il faut le mettre après la boucle.

Waxabee

  • Newbie
  • *
  • Messages: 11
    • Voir le profil
Re : Re : [SFML 2.0] Crash à la compilation sans message d'erreur
« Réponse #6 le: Septembre 18, 2012, 12:51:49 pm »
Salut,
Tu as mis le return 0; dans la boucle while, il faut le mettre après la boucle.

J'ai vraiment eu un gros sentiment de honte en lisant ton message!  ;D Je me rappelle maintenant, j'avais joué dans les parenthèses, mais j'ai du oublié de le déplacer... Quelle erreur de débutant. Tout marche maintenant, merci à vous deux!  :)
« Modifié: Septembre 18, 2012, 12:54:21 pm par Waxabee »