IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

erreur definition sfml netbeans


Sujet :

C++

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2011
    Messages : 25
    Points : 14
    Points
    14
    Par défaut erreur definition sfml netbeans
    Bonjour,
    Je suis sous netbeans et je développe avec la SFML.
    J'ai récemment résolu un problème d'inclusion de fichier au projet mais désormais un autre soucis arrive.
    Quand j'essaye d'assigner une image à un sprite j'ai une erreur, ou plein en fait.

    Mon main contient ça (c'est encore en phase de test).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
     
    #include <SFML/Graphics.hpp> 
    #include <SFML/System.hpp> 
    #include <SFML/Audio.hpp>
    #include <SFML/Network.hpp>
    #include <SFML/Window.hpp>
     
    #include <iostream> 
     
    #include "Bloc.cpp"
     
    using namespace std;
    using namespace sf;
     
     
    int main()
    {
        std::string buffer;
        bool runApplication = true;
     
        sf::RenderWindow App(sf::VideoMode(800,640,32),"Fenetre 1");
        App.SetPosition(0,0);
        App.Clear();
        App.Display();
     
     
       View Vue1;
        App.SetView(Vue1);
     
    //    Bloc b0;
    //    b0.MoveBloc(0,0);
    //    b0.image.LoadFromFile("test_image.jpg");
     
        sf::Image Image;
        Image.LoadFromFile("test_image.jpg");
        sf::Sprite Sprite;
        Sprite.SetImage(Image);
     
        App.Display();
     
        while(runApplication)
        {
             sf::Event Event;
     
            while(App.GetEvent(Event))
            {
                 if (Event.Type == sf::Event::Closed){
                        App.Close();
                        runApplication = false;
                 }
     
                if(Event.Type = sf::Event::KeyPressed)
                {
                   // cout << Event.Key.Code << endl;
                }
            }
        }
        return EXIT_SUCCESS;
    }
    Mon code erreur est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    c:/Users/Eternal/Desktop/Dev/C++/SFML-1.6/lib/libsfml-graphics-s-d.a(Sprite.o): In function `Sprite':
    D:/dev/sfml/sdk/SFML-1.6/src/SFML/Graphics/Sprite.cpp:38: multiple definition of `sf::Sprite::Sprite()'
    c:/Users/Eternal/Desktop/Dev/C++/SFML-1.6/lib/libsfml-graphics-d.a(d000129.o):(.text+0x0): first defined here
    c:/Users/Eternal/Desktop/Dev/C++/SFML-1.6/lib/libsfml-graphics-s-d.a(Sprite.o):D:/dev/sfml/sdk/SFML-1.6/src/SFML/Graphics/Sprite.cpp:64: multiple definition of `sf::Sprite::SetImage(sf::Image const&)'
    c:/Users/Eternal/Desktop/Dev/C++/SFML-1.6/lib/libsfml-graphics-d.a(d000127.o):(.text+0x0): first defined here
    c:/Users/Eternal/Desktop/Dev/C++/SFML-1.6/lib/libsfml-graphics-s-d.a(Drawable.o): In function `~Drawable':
    D:/dev/sfml/sdk/SFML-1.6/src/SFML/Graphics/Drawable.cpp:56: multiple definition of `sf::Drawable::~Drawable()'
    c:/Users/Eternal/Desktop/Dev/C++/SFML-1.6/lib/libsfml-graphics-d.a(d000168.o):(.text+0x0): first defined here
    c:/Users/Eternal/Desktop/Dev/C++/SFML-1.6/lib/libsfml-graphics-s-d.a(Image.o): In function `Image':
    D:/dev/sfml/sdk/SFML-1.6/src/SFML/Graphics/Image.cpp:43: multiple definition of `sf::Image::Image()'
    c:/Users/Eternal/Desktop/Dev/C++/SFML-1.6/lib/libsfml-graphics-d.a(d000077.o):(.text+0x0): first defined here
    c:/Users/Eternal/Desktop/Dev/C++/SFML-1.6/lib/libsfml-graphics-s-d.a(Image.o): In function `~Image':
    D:/dev/sfml/sdk/SFML-1.6/src/SFML/Graphics/Image.cpp:113: multiple definition of `sf::Image::~Image()'
    c:/Users/Eternal/Desktop/Dev/C++/SFML-1.6/lib/libsfml-graphics-d.a(d000082.o):(.text+0x0): first defined here
    c:/Users/Eternal/Desktop/Dev/C++/SFML-1.6/lib/libsfml-graphics-s-d.a(Image.o):D:/dev/sfml/sdk/SFML-1.6/src/SFML/Graphics/Image.cpp:124: multiple definition of `sf::Image::LoadFromFile(std::string const&)'
    c:/Users/Eternal/Desktop/Dev/C++/SFML-1.6/lib/libsfml-graphics-d.a(d000062.o):(.text+0x0): first defined here
    c:/Users/Eternal/Desktop/Dev/C++/SFML-1.6/lib/libsfml-graphics-s-d.a(Color.o): In function `Color':
    D:/dev/sfml/sdk/SFML-1.6/src/SFML/Graphics/Color.cpp:63: multiple definition of `sf::Color::Color(unsigned char, unsigned char, unsigned char, unsigned char)'
    c:/Users/Eternal/Desktop/Dev/C++/SFML-1.6/lib/libsfml-graphics-d.a(d000054.o):(.text+0x0): first defined heremake[2]: Leaving directory `/c/Users/Eternal/Documents/NetBeansProjects/CppApplication_3'
    make[1]: Leaving directory `/c/Users/Eternal/Documents/NetBeansProjects/CppApplication_3'
     
    collect2: ld returned 1 exit status
    make[2]: *** [dist/Debug/MinGW_V1-Windows/cppapplication_3.exe] Error 1
    make[1]: *** [.build-conf] Error 2
    make: *** [.build-impl] Error 2
    outre l'erreur que je ne comprend pas, je me demande si c'est bien normal de devoir inclure le fichier .cpp pour mes classes?

    Merci d'avance.

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 860
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 860
    Points : 219 064
    Points
    219 064
    Billets dans le blog
    120
    Par défaut
    Bonjour,

    Citation Envoyé par eternal_winds Voir le message
    outre l'erreur que je ne comprend pas, je me demande si c'est bien normal de devoir inclure le fichier .cpp pour mes classes?
    Non, il n'est absolument pas normal d'inclure des fichiers .cpp. Seul les .hpp doivent être inclut (et cela suffit)

    Corrigez cela et si vous avez d'autres erreurs, venez nous voir (notamment, je pense que vous inclusion de la bibliothèque dans l'éditeur des liens n'est juste ... mais je m'avance peut être).
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2011
    Messages : 25
    Points : 14
    Points
    14
    Par défaut
    J'ai refait un projet tout simple avec le compilateur cygwin par defaut de netbeans. le résultat est qu'il ne trouve pas les fichiers que je lui demande d'inclure explicitement, c'est ce qu'on ma dit. d'ou une inclusion des cpp.
    main.cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    #include <cstdlib>
    #include <string>
    #include "C1.h"
     
    using namespace std;
    int main(int argc, char** argv) {
     
        C1 item;
        item.chaine0 = "blop";
     
        return 0;
    }
    C1.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    #ifndef C1_H
    #define	C1_H
     
    #include <string>
     
    class C1 {
    public:
        C1();
        C1(const C1& orig);
        virtual ~C1();
        std::string chaine0;
    private:
     
    };
     
    #endif
    et C1.cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    #include "C1.h"
     
    C1::C1() {
    }
     
    C1::C1(const C1& orig) {
    }
     
    C1::~C1() {
    }
    il n'y a rien de renversant mais ca ne marche pas.
    et ca me fait la même chose avec le compileur MinGW que j'ai installé en parallèle pour mon projet SFML.

    erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    build/Debug/MinGW_V1-Windows/main.o: In function `main':
    /cygdrive/c/Users/Eternal/Documents/NetBeansProjects/CppApplication_4/main.cpp:9: undefined reference to `C1::C1()'
    /cygdrive/c/Users/Eternal/Documents/NetBeansProjects/CppApplication_4/main.cpp:12: undefined reference to `C1::~C1()'
    /cygdrive/c/Users/Eternal/Documents/NetBeansProjects/CppApplication_4/main.cpp:12: undefined reference to `C1::~C1()'

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 967
    Points
    32 967
    Billets dans le blog
    4
    Par défaut
    Bonjour,

    Peux-tu savoir quelle est le makefile utilisé par netbeans pour compiler ton projet ?
    Il semble qu'il soit incorrect et ne compile pas les autre .cpp de ton projet.
    Il y a sûrement une option pour cela.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2011
    Messages : 25
    Points : 14
    Points
    14
    Par défaut
    je suis novice en utilisation de netbeans, je vais cherchez cela.
    si quelqu'un le sait je prend aussi ^^

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2011
    Messages : 25
    Points : 14
    Points
    14
    Par défaut
    en cherchant, j'ai vu qu'il existait une option "enable dependencies check" ce qui correspond à l'inclusion des fichiers via des includes.
    il est bien activer sur mon netbeans avecle compileur par defaut.

    avez vous une autre idée?

    comment doit-JE FAIRE POUR COMPILER en ligne de commande?

  7. #7
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 860
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 860
    Points : 219 064
    Points
    219 064
    Billets dans le blog
    120
    Par défaut
    Citation Envoyé par eternal_winds Voir le message
    en cherchant, j'ai vu qu'il existait une option "enable dependencies check" ce qui correspond à l'inclusion des fichiers via des includes.
    il est bien activer sur mon netbeans avecle compileur par defaut.

    avez vous une autre idée?

    comment doit-je faire pour compiler en ligne de commande?
    http://www.sfml-dev.org/tutorials/1.6/start-linux.php

    Sinon, l'erreur pour C1, c'est soit une erreur de C++, soit une erreur de processus de compilation.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  8. #8
    Membre éprouvé Avatar de Steph_ng8
    Homme Profil pro
    Doctorant en Informatique
    Inscrit en
    Septembre 2010
    Messages
    677
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Doctorant en Informatique

    Informations forums :
    Inscription : Septembre 2010
    Messages : 677
    Points : 997
    Points
    997
    Par défaut
    Bonsoir.

    Citation Envoyé par eternal_winds Voir le message
    comment doit-JE FAIRE POUR COMPILER en ligne de commande?
    Pour commencer, il te faut localiser le compilateur C++.
    Normalement, il devrait y avoir quelque part dans les options de compilations de NetBeans (soit les options globales, soit les options du projet) un endroit pour indiquer le chemin du compilateur, et certainement aussi certaines options.
    Si tu peux, essaie de comprendre à quoi correspondent ces options

    Si tu ne trouves pas, regarde dans le fichier makefile généré par NetBeans.
    Il devrait se trouver dans le même dossier que tes fichiers sources.
    Le chemin du compilateur y est certainement stocké dans la variable CXX.


    Ensuite, pour la compilation proprement dite, les options dépendent du compilateur.
    Je peux t'aider pour g++.
    (Vu que tu sembles utiliser MinGW, le compilateur est certainement g++.)

    Tu as principalement deux lignes à connaître :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    g++ -c -o fichier.o fichier.cpp              // Pour compiler un fichier d'implémentation en fichier objet
    g++ -o executable fichier1.o fichier2.o ...  // Pour compiler tous les fichiers objets en un exécutable et faire l'édition des liens
    Voici les principales options :
    • -Wall afficher (presque) tous les warnings ;
    • -Wextra (ou -W) afficher encore plus de warnings ;
    • -g compiler en mode « debug » (utile si l'on souhaite utiliser un débogueur) ;
    • -c créer un fichier objet ;
    • -o sortie nommer le fichier généré « sortie ».

    Pour cette dernière option, le compilateur utilise par défaut les noms suivants :
    • « fichier.o » pour la compilation du fichier source « fichier.cpp » (avec l'option « -c ») ;
    • « a.exe » pour l'exécutable (sans l'option « -c »).


    Si tu dois utiliser des bibliothèques particulières, il y a ces options :
    • -lbib (ou -l bib) utiliser la bibliothèque « bib » ;
    • -Ldir chercher les fichiers de bibliothèques partagées aussi dans le répertoire « dir ».

    On peut aussi citer cette option :
    • -Idir chercher les fichiers d'en-tête aussi dans le répertoire « dir ».

    Contrairement aux autres, ces trois options peuvent apparaître autant de fois que nécessaire.

    PS.: Tu sais utiliser l'invite de commandes ?

  9. #9
    Membre éprouvé Avatar de Steph_ng8
    Homme Profil pro
    Doctorant en Informatique
    Inscrit en
    Septembre 2010
    Messages
    677
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Doctorant en Informatique

    Informations forums :
    Inscription : Septembre 2010
    Messages : 677
    Points : 997
    Points
    997
    Par défaut
    Au fait, si tu n'es pas au courant, il y a un forum dédié à NetBeans dans la section Outils pour C & C++.
    D'ailleurs, dans la même section, il y a un forum dédié à gcc.
    (g++ et gcc, c'est pratiquement la même chose)

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2011
    Messages : 25
    Points : 14
    Points
    14
    Par défaut
    désolé de vous faire répéter ce qui est dans d'autres sujets du forum, c'est vrai que j'aurais pu gratter une peu plus.
    Pour l'invite de commande c'est bon, je ferais des tests et je vous communiquerais le résultat.

Discussions similaires

  1. Erreur ListenerStart sous NetBeans
    Par janyoura dans le forum Tomcat et TomEE
    Réponses: 1
    Dernier message: 28/08/2012, 07h24
  2. Erreur Mysql sous NetBeans IDE 6.9.1:
    Par allisahmd09 dans le forum NetBeans
    Réponses: 0
    Dernier message: 10/07/2011, 18h41
  3. erreur au niveau netbeans
    Par doudou_mprof dans le forum Interfaces Graphiques en Java
    Réponses: 1
    Dernier message: 01/07/2010, 09h39
  4. Erreur de compilation netbeans 6.7.1 JEE
    Par dalidali86 dans le forum NetBeans
    Réponses: 0
    Dernier message: 17/08/2009, 11h31
  5. [Débutant] Erreur rake sur NetBeans 6.0
    Par FranT dans le forum Ruby on Rails
    Réponses: 0
    Dernier message: 21/01/2008, 18h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo