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

Visual C++ Discussion :

problème de retour


Sujet :

Visual C++

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 25
    Par défaut problème de retour
    Bonjour,

    J'ai un ptit soucis avec un code que voici.

    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
    #include "Character.h"
     
    character::character(IrrlichtDevice* Device)
    {
        device = Device;
        IVideoDriver* driver = device->getVideoDriver ();
        ISceneManager *scenegraph = device->getSceneManager ();
     
        //On récupère un pointeur vers la GUI.
        IGUIEnvironment* env = device->getGUIEnvironment();
        IGUIStaticText* login = env->addStaticText(L"test reussi avec succes",rect<s32>(710,190,900,220),false);
     
        wchar_t titre[100];
        swprintf(titre, 100, L"Akhynia");
        device->setWindowCaption(titre);
    }
    character::~character()
    {
    }
    char character::draw()
    {
    }
    et l'autre

    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
    #ifndef CHARACTER_H
    #define CHARACTER_H
     
    #include "Login.h"
     
    class character
    {
        public:
            character(IrrlichtDevice* Device);
            ~character();
            char draw();
        private:
            IrrlichtDevice* device;
    };
     
    #endif
    Lorsque je compile il me met ce message d'erreur :

    character.cpp(22) : error C4716: 'character::draw' : doit retourner une valeur

    Si je lui mets

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    char character::draw()
    { return 1;
    }
    J'ai ce magnifique message :

    >coreApp.obj : error LNK2019: symbole externe non résolu "__declspec(dllimport) class irr::IrrlichtDevice * __cdecl irr::createDevice(enum irr::video::E_DRIVER_TYPE,class irr::core::dimension2d<int> const &,unsigned int,bool,bool,bool,class irr::IEventReceiver *)" (__imp_?createDevice@irr@@YAPAVIrrlichtDevice@1@W4E_DRIVER_TYPE@video@1@ABV?$dimension2d@H@core@1@I_N22PAVIEventReceiver@1@@Z) référencé dans la fonction "public: __thiscall coreApp::coreApp(void)" (??0coreApp@@QAE@XZ)
    1>MSVCRTD.lib(crtexew.obj) : error LNK2019: symbole externe non résolu _WinMain@16 référencé dans la fonction ___tmainCRTStartup
    1>C:\aragon\projetencours\Akhynia\Debug\Akhynia.exe : fatal error LNK1120: 2 externes non résolus
    Et je n'arrive pas à résoudre mon problème. Est ce que quelqu'un à une idée à me soumettre.

    Merci par avance au revoir.

  2. #2
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Salut,

    Comme l'indique le prototype de ta fonction, draw est sensée (tracer ton personnage et) renvoyer... un caractère.

    Déjà, je me demande s'il est logique qu'elle renvoie un caractère, mais bon, on va estimer que tu sais ce que tu fais sur ce coup là (j'aurais plutot vu qu'elle ne renvoie rien, voir un booléen de réussite )

    Tu as de la chance, 1 peut être considéré comme un caractère, mais cela occasionne une conversion implicite... que le compilateur devrait t'indiquer s'il était correctement réglé (d'où la question sur la raison de renvoyer un char )

    Par contre le problème du "undefined symbol" apparait typiquement lors de la dernière étape de la compilation qui est appelée l'édition de liens.

    Typiquement, ce genre de problème apparait lorsque tu utilise une bibliothèque externe (ici, il s'agit d'irrlicht) mais que tu n'a pas configuré l'éditeur de liens pour qu'il lie ton projet avec cette bibliothèque.

    Selon le compilateur/ l'EDI que tu utilise, il faut donc "simplement" que tu indique la nécessité de lier avec irrlicht, mais, pour pouvoir t'en dire plus sur le comment, il faudrait connaitre l'EDI utilisé (à moins que tu n'utilise un Makefile ou CMake )
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 25
    Par défaut
    Merci pour cette réponse.

    Pour ce qui est du lié, il suffit simplement d'inclure le header d'Irrlicht, et la compilation fait le reste.

    Pour le programme on m'a beaucoup aidé donc je ne suis pas à l'origine du code, il se peut qu'il y ai un soucis.

    J'ai même configurer mon éditeur pour lui rajouter le dossier include et lib d'Irrlicht donc de ce côté je ne pense pas qu'il y ai de soucis.

    Je sais pas quoi faire.

  4. #4
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Attention... cela fait bien longtemps que je ne manipule pas irrlicht, et donc, es-tu sur qu'il n'y ait pas un libirrlicht.a ou un irrlicht.lib quelque part

    Si oui, il faut indiquer dans les options du projet (qui dépendent de l'EDI que tu utilise) d'effectuer la liaison avec ce fichier.

    Le fait d'inclure le fichier d'en-tête permet "juste" au compilateur de connaitre les fonctions qu'il est sensé récupérer de la bibliothèque.

    Le fait d'indiquer le dossier dans lequel se trouve la bibliothèque (dans les options du "linker") permet "juste" à l'éditeur de liens de savoir où il doit aller chercher la bibliothèque.

    Mais ces deux étapes - importantes s'il en est (la première au moment de la compilation proprement dite, la seconde au moment de l'édition de liens) - ne servent à rien si tu ne précise pas à l'éditeur de lien "maintenant que tu sais où aller chercher la bibliothèque, veux tu bien lier telle bibliothèque à mon exécutable "

    Donc, au final, dis nous quel EDI (Environnement de Developpement Intégré) tu utilise, pour que l'on puisse te poser une question précise en vue de vérifier que tu as bien demandé cela à l'éditeur de liens
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 25
    Par défaut
    j'utilise VC++, et mon include est fait, et mes liens dans les options aussi.

    De ce côté normalement pas de soucis.

    Après recherche dans le code, je pense avoir trouvé une piste.

    j'ai ce code là dans le coreApp.cpp

    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
    #include "coreApp.h"
     
    coreApp::coreApp()
    {
        device = createDevice(EDT_OPENGL,dimension2d<s32>(1024,768), 32);
        driver = device->getVideoDriver();
        scenegraph = device->getSceneManager();
        env = device->getGUIEnvironment();
        LOGIN = new login(device);
    }
    coreApp::~coreApp()
    {
        device->closeDevice();
    }
    void coreApp::draw()
    {
        while(device->run())
        {
            driver->beginScene(true, true, SColor(255,100,101,140));
            env->drawAll();
            scenegraph->drawAll();
            static bool next = true;
            if(LOGIN && LOGIN->draw() == 2)
            {
                delete LOGIN;
                LOGIN = false;
                Carac = new character(device);
            }
            if(Carac)
                Carac->draw();
            driver->endScene();
        }
        device->drop();
    }
    Je pense qu'il attend un retour de la ligne Carac = new character(device);

    Si je lui met
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    char character::draw()
    { return device;
    }
    j'ai l'erreur suivante:

    1>c:\aragon\projetencours\akhynia\akhynia\character.cpp(21) : error C2440: 'return'*: impossible de convertir de 'irr::IrrlichtDevice *' en 'char'
    1> Aucun contexte dans lequel cette conversion est possible

  6. #6
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Pardonne moi d'insister, mais, visiblement, non...

    J'en veux pour preuve la fin de l'erreur:
    fatal error LNK1120: 2 externes non résolus
    Il se fait que, malheureusement, je ne suis pas coutumier de VC++, et que je ne peux donc pas t'expliquer "facilement" comment t'assurer que tu a indiqué les dépendances avec irrlicht dans les options du projet, mais je déplace maintenant la discussion dans la partie ad-hoc du forum, où, je n'en doute pas un seul instant, tu obtiendra une réponse rapide
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 25
    Par défaut
    Pour aider j'ai mis dans le menu outils => options => projets et solutions => répertoire de vcc+ => Fichier include et Fichier bibliothèque sont rempli avec les répertoires correspondant d'Irrlicht.

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 25
    Par défaut
    Bon pour conclure je suis allé sur code block et ça tourne nickel.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème de retour à la ligne
    Par AurelBUD dans le forum Général JavaScript
    Réponses: 20
    Dernier message: 30/05/2006, 15h17
  2. show_hide un div: problème avec retour
    Par -DeN- dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 17/02/2006, 12h16
  3. Problème de retour aprés l'appel d'une popup
    Par PADAWANN33 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 06/02/2006, 15h53
  4. [MySQL] problème de retour à la ligne.
    Par NPortmann dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 29/09/2005, 14h43
  5. [Struts] Problème de retour chariot
    Par pimousse76 dans le forum Struts 1
    Réponses: 5
    Dernier message: 22/11/2004, 15h39

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