Forum de la communauté SFML

Aide => Général => Discussion démarrée par: Bl4ckb0ne le Décembre 09, 2012, 11:19:47 pm

Titre: Crash systématique de l'exécutable
Posté par: Bl4ckb0ne le Décembre 09, 2012, 11:19:47 pm
Décidément, c'est pas mon jour ^^

J'ai effectué un passage de la 1.6 à la 2.0, mais impossible de lancer l'exécutable! Tout plante systématiquement, rien à faire.

Je file le code (basique de chez basique, je débute)

#include <SFML/Graphics.hpp>
#include <SFML/Window.hpp>
#include <iostream>
#include <sstream>
#include "define.h"
#include "fonts.h"

using namespace std;

int main()
{
    // Calcul FPS
    sf::Clock clock;
    sf::Time elapsed1 = clock.getElapsedTime();

    // Sprites test pour déplacement
    sf::Texture Texture_Left;
        if (!Texture_Left.loadFromFile("sprites/left.png"))
                std::cout << "Erreur du chargement de left.png" << std::endl;
        else
                std::cout << "Chargement réussi de left.png" << std::endl;

    sf::Sprite Left(Texture_Left);

    sf::Texture Texture_Right;
        if (!Texture_Right.loadFromFile("sprites/right.png"))
                std::cout << "Erreur du chargement de right.png" << std::endl;
        else
                std::cout << "Chargement réussi de right.png" << std::endl;

    sf::Sprite Right(Texture_Right);

    sf::Texture Texture_Jump;
        if (!Texture_Jump.loadFromFile("sprites/jump.png"))
                std::cout << "Erreur du chargement de jump.png" << std::endl;
        else
                std::cout << "Chargement réussi de jump.png" << std::endl;

    sf::Sprite Jump(Texture_Jump);

    //Sprite du background
    sf::Texture Background;
        if (!Background.loadFromFile("background/Sundown.png"))
                std::cout << "Erreur du chargement de Sundown.png" << std::endl;
        else
                std::cout << "Chargement réussi de Sundown.png" << std::endl;

    // Chargement de l'écran de pause
    sf::Texture Pause_Screen;
        if (!Pause_Screen.loadFromFile("background/Pause.png"))
                std::cout << "Erreur du chargement de Pause.png" << std::endl;
        else
                std::cout << "Chargement réussi de Pause.png" << std::endl;

    // Police d'écriture Visitor
    sf::Font Visitor;
        if (!Visitor.loadFromFile("font/visitor.ttf"))
                std::cout << "Erreur du chargement de Visitor.ttf" << std::endl;
        else
                std::cout << "Chargement réussi de Visitor.ttf" << std::endl;

    // Création de la fenêtre principale
    sf::RenderWindow App(sf::VideoMode(800, 600), "SFML Graphics");



        // Début de la boucle de rendu
while (App.isOpen())
    {

        //Affichage des IPS
        App.setFramerateLimit(60);
        sf::Time frameTime = clock.restart();
        float framerate = 1 / (frameTime.asMilliseconds() * 0.001);
        std::ostringstream oss;                             //
        oss << framerate;                                   // Conversion des IPS en string pour affichage
        sf::Text FPS_affichage (oss.str(), Visitor, 50);  //

        //Progression des events
        sf::Event Event;
        while (App.pollEvent(Event))
        {
            if (Event.type == sf::Event::Closed)        // Fermeture de la fenêtre via la croix
                App.close();

            if (sf::Keyboard::isKeyPressed(sf::Keyboard::Escape))   // Fermeture de la fenêtre via escape
            {
                App.close();
            }


// Affichage des IPS lors de la pression de F1
           if(sf::Keyboard::isKeyPressed(sf::Keyboard::F1))
            {
                App.draw(FPS_affichage);
            }

// Fermeture des IPS lors de la pression de F2
            if(sf::Keyboard::isKeyPressed(sf::Keyboard::F2))
            {
                App.clear();
            }


/* Event ecran de pause
            if(sf::Keyboard::isKeyPressed(sf::Key::P))
            {
                App.clear();
                App.Draw(Pause_Screen);
            }
*/


            }

            App.display();

        }



    }

 

P.s: J'ai une carte graphique Ati, drivers à jour.
Titre: Re : Crash systématique de l'exécutable
Posté par: Laurent le Décembre 10, 2012, 08:11:50 am
Quelle version de gcc ?
Titre: Re : Crash systématique de l'exécutable
Posté par: Bl4ckb0ne le Décembre 10, 2012, 11:12:52 pm
Version 4.4.1

Les includes de la SFML sont copiés dans le dossier MinGw de Code Blocks, et sont appelé via les #includes, aucune linkage dans les build options etc.
Titre: Re : Crash systématique de l'exécutable
Posté par: Bl4ckb0ne le Décembre 11, 2012, 10:36:29 pm
up, le problème est toujours là ><
Titre: Re : Crash systématique de l'exécutable
Posté par: Laurent le Décembre 11, 2012, 10:40:13 pm
T'as téléchargé quelle version de SFML (SJLJ ou DW2) ? Et ton gcc 4.4.1, c'est un SJLJ ou DW2 (ne demande pas comment le savoir, c'est marqué dans le tutoriel) ?

Le debugger dit quoi par rapport au crash ?
Titre: Re : Crash systématique de l'exécutable
Posté par: Bl4ckb0ne le Décembre 11, 2012, 11:56:29 pm
J'ai la version 2.0 en SJLJ (et j'ai une carte Ati)

Je n'arrive pas à faire parler l'erreur (Windows 7), j'ai juste l'option "arrêter maintenant")

Le debugger ne me dit rien (ou peut-être que je ne regarde pas le bon endroit), le programme compile normalement, et s'exécute sans broncher. Aucun message de réussite du chargement dans la console, la fenêtre se créer, et plante immédiatement après.
Titre: Re : Crash systématique de l'exécutable
Posté par: Laurent le Décembre 12, 2012, 07:44:51 am
Si ça crashe, tu devrais pouvoir debugger. Lis un rapide tutoriel sur ton EDI / debugger si tu ne sais pas comment l'utiliser, c'est très simple.

Et sinon:
Citer
Et ton gcc 4.4.1, c'est un SJLJ ou DW2
Titre: Re : Crash systématique de l'exécutable
Posté par: Bl4ckb0ne le Décembre 12, 2012, 11:31:32 am
Je regarde le debugger d'ici quelques heures, parce que je n'ai pas accès à mon pc dans l'immédiat.

Et pour mon code::Blocks, c'est un SJLJ

Edit : La réponse du debug

#0 669970A7     sf::priv::ImageLoader::loadImageFromFile(std::string const&, std::vector<unsigned char, std::allocator<unsigned char> >&, sf::Vector2<unsigned int>&) () (C:\Users\Simon\Dropbox\Test_jeu\Test_Jeu_Windows\bin\Debug\sfml-graphics-2.dll:??)
#1 66985189     sf::Image::loadFromFile(std::string const&) () (C:\Users\Simon\Dropbox\Test_jeu\Test_Jeu_Windows\bin\Debug\sfml-graphics-2.dll:??)
#2 669A2D0E     sf::Texture::loadFromFile(std::string const&, sf::Rect<int> const&) () (C:\Users\Simon\Dropbox\Test_jeu\Test_Jeu_Windows\bin\Debug\sfml-graphics-2.dll:??)
#3 004014A4     main() (C:\Users\Simon\Dropbox\Test_jeu\main.cpp:18)
 
Titre: Re : Crash systématique de l'exécutable
Posté par: Bl4ckb0ne le Décembre 13, 2012, 12:05:27 am
Up avec l'image, les dll sont pourtant bien là =/

(http://i.imgur.com/j3qMk.png)
Titre: Re : Crash systématique de l'exécutable
Posté par: Laurent le Décembre 13, 2012, 07:54:26 am
Si c'était un problème de DLL manquante l'exécutable ne se lancerait même pas.

Je pense que c'est un souci d'environnement / configuration. Au pire essaye de recompiler SFML pour en être absolument certain.

Essaye aussi de créer la fenêtre au tout début du main(), avant de charger les textures.
Titre: Re : Crash systématique de l'exécutable
Posté par: Bl4ckb0ne le Décembre 13, 2012, 11:12:34 am
Ok, j'essaye tout ça se soir et te donne le résultat.
Titre: Re : Crash systématique de l'exécutable
Posté par: Bl4ckb0ne le Décembre 13, 2012, 11:25:57 pm
J'ai mis la création de la fenêtre juste après la parenthèse du main, et recompiler les sources, toujours rien =(
Titre: Re : Crash systématique de l'exécutable
Posté par: Laurent le Décembre 14, 2012, 08:11:14 am
Tu es sûr que tu as bien recompilé SFML, et remplacé les bibliothèques par les nouvelles ?
Titre: Re : Crash systématique de l'exécutable
Posté par: Bl4ckb0ne le Décembre 14, 2012, 11:25:34 am
Je vais re essayer ce soir, là, je pars au lycée.
Titre: Re : Crash systématique de l'exécutable
Posté par: Bl4ckb0ne le Décembre 15, 2012, 12:09:04 am
J'ai recompilé les sources via un autre dossier téléchargé sur sfmlcoder, et j'ai suivi le tuto à la lettre; ça fonctionne!

La fenêtre s'ouvre, mais il est incapable de m'ouvrir les images et les polices d'écriture ><

Failed to load image "sprites/left.png". Reason : Unable to open file
Erreur du chargement de left.png
Failed to load image "sprites/right.png". Reason : Unable to open file
Erreur du chargement de right.png
Failed to load image "sprites/jump.png". Reason : Unable to open file
Erreur du chargement de jump.png
Failed to load image "background/Sundown.png". Reason : Unable to open file
Erreur du chargement de Sundown.png
Failed to load image "background/Pause.png". Reason : Unable to open file
Erreur du chargement de Pause.png
Failed to load font "font/visitor.ttf" (failed to create the font face)
Erreur du chargement de Visitor.ttf
 
Titre: Re : Crash systématique de l'exécutable
Posté par: Laurent le Décembre 15, 2012, 10:03:37 am
Ton "working directory" n'est sûrement pas le bon. Lorsque tu exécutes ton projet depuis l'EDI, c'est généralement le chemin du projet et non le chemin de l'exécutable.
Titre: Re : Crash systématique de l'exécutable
Posté par: Bl4ckb0ne le Décembre 15, 2012, 03:58:24 pm
J'ai bidouillé un peu hier soir, et j'ai résolu le problème.

Merci beaucoup pour ton aide et le temps passé à m'aide ;)