Forum de la communauté SFML

Aide => Général => Discussion démarrée par: Elfayer le Juin 01, 2013, 11:20:48 am

Titre: Passage de SFML 2.0 à 1.6 problème de compilation
Posté par: Elfayer 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.
Titre: Re : Passage de SFML 2.0 à 1.6 problème de compilation
Posté par: Laurent 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.
Titre: Re : Passage de SFML 2.0 à 1.6 problème de compilation
Posté par: Elfayer 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.
Titre: Re : Passage de SFML 2.0 à 1.6 problème de compilation
Posté par: Laurent 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.
Titre: Re : Passage de SFML 2.0 à 1.6 problème de compilation
Posté par: Elfayer 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;
}
Titre: Re : Passage de SFML 2.0 à 1.6 problème de compilation
Posté par: Laurent 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 ?
Titre: Re : Passage de SFML 2.0 à 1.6 problème de compilation
Posté par: Elfayer 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 =)
Titre: Re : Passage de SFML 2.0 à 1.6 problème de compilation
Posté par: Laurent 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.