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

Auteur Sujet: Passage de SFML 2.0 à 1.6 problème de compilation  (Lu 2493 fois)

0 Membres et 1 Invité sur ce sujet

Elfayer

  • Newbie
  • *
  • Messages: 42
    • Voir le profil
Passage de SFML 2.0 à 1.6 problème de compilation
« le: Juin 01, 2013, 11:20:48 am »
Bonjour,
Je suis passé de la 2.0 à la 1.6 et lorsque je compile un code de la 2.0 (que je vais retapper), j'ai des erreurs sur des fichiers de la lib SFML :

Citer
In file included from /usr/include/SFML/Window.hpp:34:0,
                 from /usr/include/SFML/Graphics.hpp:32,
                 from Display.hpp:14,
                 from display.cpp:14:
/usr/include/SFML/Window/Event.hpp:55:9: error: expected identifier before numeric constant
/usr/include/SFML/Window/Event.hpp:55:9: error: expected ‘}’ before numeric constant
/usr/include/SFML/Window/Event.hpp:55:9: error: expected unqualified-id before numeric constant
/usr/include/SFML/Window/Event.hpp:206:9: error: ‘Key’ does not name a type
/usr/include/SFML/Window/Event.hpp:217:9: error: ‘Uint32’ does not name a type
/usr/include/SFML/Window/Event.hpp:318:1: error: expected declaration before ‘}’ token
make: *** [display.o] Error 1

Je ne comprend pas pourquoi les erreurs viennent de la lib et non pas de mes fichiers.

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re : Passage de SFML 2.0 à 1.6 problème de compilation
« Réponse #1 le: Juin 01, 2013, 11:47:00 am »
Citer
Je suis passé de la 2.0 à la 1.6
???

Sinon il faut voir le code qui est inclus avant, l'erreur peut aussi venir de là. Le mieux serait de reproduire cette erreur avec un code complet minimal, ça te permettra de mieux identifier ce qui la provoque, et nous on pourra t'aider beaucoup plus efficacement.
Laurent Gomila - SFML developer

Elfayer

  • Newbie
  • *
  • Messages: 42
    • Voir le profil
Re : Passage de SFML 2.0 à 1.6 problème de compilation
« Réponse #2 le: Juin 01, 2013, 11:51:31 am »
Alors, après quelque test, voici mes observations :

j'ai un fichier display.cpp, Display.cpp et Display.hpp.

dans display.cpp, si j'include :

Citer
#include <SFML/Graphics.hpp>
#include <SFML/System.hpp>
#include <SFML/Window.hpp>

et pas Display.hpp, sa compile.

En revanche, si j'enlève ces 3 includes et que je les renplace par :
Citer
#include "Display.hpp"
Je retrouve l'erreur !

Encore plus amusant, voici le fichier Display.hpp :

Citer
#ifndef DISPLAY_HPP_
#define DISPLAY_HPP_

#include <SFML/Graphics.hpp>
#include <SFML/System.hpp>
#include <SFML/Window.hpp>

#endif

Mon code SFML est dans le fichier Display.cpp uniquement. Ici, je ne le compile pas.
« Modifié: Juin 01, 2013, 01:05:59 pm par Elfayer »

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re : Passage de SFML 2.0 à 1.6 problème de compilation
« Réponse #3 le: Juin 01, 2013, 12:57:47 pm »
Je me doute bien que tu inclues SFML/Graphics.hpp ;)

Ce qu'il faut c'est voir tout ce qui est fait avant cette inclusion. Si tu prends un fichier vide avec uniquement #include <SFML/Graphics.hpp>, tu as la même erreur ? Bref, cherche un peu, bricole, teste des choses, réduit le code au strict minimum. C'est comme ça qu'on résoud les bugs.
Laurent Gomila - SFML developer

Elfayer

  • Newbie
  • *
  • Messages: 42
    • Voir le profil
Re : Passage de SFML 2.0 à 1.6 problème de compilation
« Réponse #4 le: Juin 01, 2013, 01:02:54 pm »
J'ai edité mon dernier post. Et non car ce code compile :

Citer
#include <cstdlib>

#include <SFML/Graphics.hpp>
#include <SFML/System.hpp>
#include <SFML/Window.hpp>
 
using namespace sf;
 
int main()
{
  RenderWindow app(VideoMode(800, 600, 32), "Ma premiere fenetre SFML ! ");
 
  // Boucle principale                                                                                                                                                                                       
  while (app.IsOpened())
    {
      Event event;
 
      while (app.GetEvent(event))
        {
          if (event.Type == Event::Closed)
            app.Close();
        }
 
      // Remplissage de l'écran (couleur noire par défaut)                                                                                                                                                   
      app.Clear();
 
      // Affichage de la fenêtre à l'écran                                                                                                                                                                   
      app.Display();
    }
  return EXIT_SUCCESS;
}
« Modifié: Juin 01, 2013, 01:04:47 pm par Elfayer »

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re : Passage de SFML 2.0 à 1.6 problème de compilation
« Réponse #5 le: Juin 01, 2013, 01:30:40 pm »
Donc, un fichier .cpp avec uniquement ça dedans

#ifndef DISPLAY_HPP_
#define DISPLAY_HPP_

#include <SFML/Graphics.hpp>
#include <SFML/System.hpp>
#include <SFML/Window.hpp>

#endif

... produit l'erreur ?
Laurent Gomila - SFML developer

Elfayer

  • Newbie
  • *
  • Messages: 42
    • Voir le profil
Re : Passage de SFML 2.0 à 1.6 problème de compilation
« Réponse #6 le: Juin 01, 2013, 02:20:03 pm »
je ne sais pas par quel miracle :

Citer
#include <iostream>
#include <iomanip>
#include "demographie.hpp"
#include "Display.hpp"

ne fonctionne pas, tandis que :

Citer
#include <iostream>
#include <iomanip>
#include "Display.hpp"
#include "demographie.hpp"

fonctionne...

Merci pour ton aide Laurent =)
« Modifié: Juin 01, 2013, 02:24:31 pm par Elfayer »

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re : Passage de SFML 2.0 à 1.6 problème de compilation
« Réponse #7 le: Juin 01, 2013, 02:48:28 pm »
T'as pas réglé le problème pour autant. Ca ne devrait pas être difficile de virer récursivement au fur et à mesure les inclusions et/ou le code qui se trouve au-dessus de celui qu produit l'erreur, non ?

Là par exemple on dirait bien que c'est demographie.hpp qui fout la merde. Regarde ce qu'il contient, et continue jusqu'à trouver le truc louche.
Laurent Gomila - SFML developer