-
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.
-
Quelle version de gcc ?
-
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.
-
up, le problème est toujours là ><
-
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 ?
-
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.
-
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:
Et ton gcc 4.4.1, c'est un SJLJ ou DW2
-
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)
-
Up avec l'image, les dll sont pourtant bien là =/
(http://i.imgur.com/j3qMk.png)
-
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.
-
Ok, j'essaye tout ça se soir et te donne le résultat.
-
J'ai mis la création de la fenêtre juste après la parenthèse du main, et recompiler les sources, toujours rien =(
-
Tu es sûr que tu as bien recompilé SFML, et remplacé les bibliothèques par les nouvelles ?
-
Je vais re essayer ce soir, là, je pars au lycée.
-
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
-
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.
-
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 ;)