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

API graphiques Discussion :

problème d'exécution avec Irrlicht


Sujet :

API graphiques

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2022
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2022
    Messages : 9
    Par défaut problème d'exécution avec Irrlicht
    Hello tout le monde,


    J'ai essayé après quelques années de me remettre à Irrlicht, et j'ai un petit soucis, que je n'arrive pas a résoudre en cherchant sur le net.
    Alors je souhaiterais savoir si il y a des gens qui utilisent encore cette API..
    J'ai un problème au lancement du programme, qui plante sur une SEG FAULT.
    Est ce un problème de DLL, ou autre?
    Ma config : windows 10, MinGW, GCC, CodeBlocks, Irrlicht 1.6 (j'ai essayé la 1.8.5 mais j'arrivais pas a compiler la dll qui n'est pas fournie).

    Voila Si jamais quelqu'un a une solution, un conseil.. je suis preneur!

    Have a nice day !



    PS: voici le code au cas où

    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
    int main(int argc, char** argv)
    {
     
        IrrlichtDevice *device =
            createDevice(EDT_SOFTWARE, dimension2d<u32>(640, 480), 16,
                false, false, false, 0);
     
     
        device->setWindowCaption(L"Hello World! - Irrlicht Engine Demo");
     
        IVideoDriver* driver = device->getVideoDriver();
        ISceneManager* smgr = device->getSceneManager();
        IGUIEnvironment* guienv = device->getGUIEnvironment();
     
     
        guienv->addStaticText(L"Hello World! This is the Irrlicht Software renderer!",
            rect<int>(10,10,200,22), true);
    et le résultat:
    Debugger name and version: GNU gdb (GDB) 7.6.1
    Child process PID: 17388
    Program received signal SIGSEGV, Segmentation fault.
    At C:\test\irrl\main.cpp:39

  2. #2
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 97
    Par défaut
    Hi, dans l'erreur il y a ça : "At C:\test\irrl\main.cpp:39 "
    c'est dire que la ligne 39 fait crash selon l'erreur, mais ton code s'arrete à la ligne 17
    Check la ligne 39 ou renvoie le code complet, pour voir.

  3. #3
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2022
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2022
    Messages : 9
    Par défaut
    Citation Envoyé par romnair Voir le message
    Hi, dans l'erreur il y a ça : "At C:\test\irrl\main.cpp:39 "
    c'est dire que la ligne 39 fait crash selon l'erreur, mais ton code s'arrete à la ligne 17
    Check la ligne 39 ou renvoie le code complet, pour voir.
    C'est juste que j'ai pas mis les include et les namespace au debut, mai l'exectuion ne va pas plus loin...

  4. #4
    Rédacteur/Modérateur


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

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 162
    Billets dans le blog
    4
    Par défaut
    L'exécution n'ira pas plus loin qu'un crash non c'est sûr.
    Tu regardes ta ligne 39, et tu cherches pourquoi le pointeur que tu as sur cette ligne est nullptr.
    Et si c'est un call de Irrlicht qui retourne un pointuer null, tu regardes dans leur documentation pourquoi ton code serait incorrect, ou dans d'éventuels logs d'erreurs ce que tu fais ou se passe mal.
    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 régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2022
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2022
    Messages : 9
    Par défaut
    Citation Envoyé par Bousk Voir le message
    L'exécution n'ira pas plus loin qu'un crash non c'est sûr.
    Tu regardes ta ligne 39, et tu cherches pourquoi le pointeur que tu as sur cette ligne est nullptr.
    Et si c'est un call de Irrlicht qui retourne un pointuer null, tu regardes dans leur documentation pourquoi ton code serait incorrect, ou dans d'éventuels logs d'erreurs ce que tu fais ou se passe mal.
    hello camarade,
    au passage merci d'avoir répondu c'est sympa :-)

    driver smgr et guienv, ne sont pas null mais plantent quand on y accede, donc sur addStaticText.

    Le code pourtant on a tous le meme, il est généré par l'assistant de creation de projet de codeblocks, il est sur tous les tutoriel. Autrefois je n'avais aucun probleme et la ca ne mamr hce pas et je ne sais pas coimment identifier l'erreur. Irrlicht est elle sensée marcher encore aujourdhui? Je ne sais meme pas, et je ne trouve rien d'autre...

  6. #6
    Expert confirmé
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 549
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 549
    Par défaut
    Citation Envoyé par sd333 Voir le message
    hello camarade,
    au passage merci d'avoir répondu c'est sympa :-)
    helloet à la première ligne de code avec le pointeur de *device est ce que le pointeur est bien initialisé ?

  7. #7
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2022
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2022
    Messages : 9
    Par défaut
    Citation Envoyé par Mat.M Voir le message
    helloet à la première ligne de code avec le pointeur de *device est ce que le pointeur est bien initialisé ?
    Je ne sais pas il n'est pas null.... mais j'ai l'impression que le createDevice renvoie quelque chose de pas utilisable :s
    Comment savoir sil est bien initialisé?

  8. #8
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 97
    Par défaut
    @Bousk ta déjà donné la réponse : "Tu regardes ta ligne 39, et tu cherches pourquoi le pointeur que tu as sur cette ligne est nullptr.
    Et si c'est un call de Irrlicht qui retourne un pointuer null"

    et pour ta question de comment savoir : "tu regardes dans leur documentation pourquoi ton code serait incorrect, ou dans d'éventuels logs d'erreurs ce que tu fais ou se passe mal."

    Je rajouterai que j'ai dl sur leur site et il te donne dans le .zip, la doc, les exemples+ des comments(bon en anglais mais accessible je pense) et justement dans les
    comment il y a écrit : "Always check the return value to cope with unsupported drivers, dimensions, etc."; pour la fonction createDevice().

  9. #9
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2022
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2022
    Messages : 9
    Par défaut
    Citation Envoyé par romnair Voir le message
    @Bousk ta déjà donné la réponse : "Tu regardes ta ligne 39, et tu cherches pourquoi le pointeur que tu as sur cette ligne est nullptr.
    Et si c'est un call de Irrlicht qui retourne un pointuer null"

    et pour ta question de comment savoir : "tu regardes dans leur documentation pourquoi ton code serait incorrect, ou dans d'éventuels logs d'erreurs ce que tu fais ou se passe mal."

    Je rajouterai que j'ai dl sur leur site et il te donne dans le .zip, la doc, les exemples+ des comments(bon en anglais mais accessible je pense) et justement dans les
    comment il y a écrit : "Always check the return value to cope with unsupported drivers, dimensions, etc."; pour la fonction createDevice().

    Ben j'ai vérifié le code, j'ai testé les exemples, le code est le même et j'ai le meme probleme avec les exemples... Pour le driver_type, avec EDT_SWOFTWARE, au moins l objet n'est pas null (contrairement aux autres ou l objet est carrement null) Donc a priori c'est pas le driver_type !!
    En regardant la doc je ne vois pas non plus, mes parametres semblent bons....

    Je mets le code complet au cas pour être plus précis:

    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
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
     
    #include <irr/irrlicht.h>
    #include <stdio.h>
     
    using namespace irr;
     
     
    using namespace core;
    using namespace scene;
    using namespace video;
    using namespace io;
    using namespace gui;
     
     
    int main(int argc, char** argv)
    {
     
        IrrlichtDevice *device =
            createDevice(EDT_SOFTWARE, dimension2d<u32>(640, 480), 16,
                false, false, false, 0);
     
        if (!device)
            printf("pas d fenetre\n");
        else
            printf("fenetre ok\n");
     
        device->setWindowCaption(L"Hello World! - Irrlicht Engine Demo");
     
        IVideoDriver* driver = device->getVideoDriver();
        ISceneManager* smgr = device->getSceneManager();
        IGUIEnvironment* guienv = device->getGUIEnvironment();
     
        if(!driver)
            printf("driver null \n");
        else
            printf("driver ok \n");
        if(!guienv)
            printf("guienv null \n");
        else
            printf("guienv ok \n");
         if(!smgr)
            printf("smgr null \n");
        else
            printf("smgr ok \n");
    /*
        if(guienv->addStaticText(L"Hello World! This is the Irrlicht Software renderer!",
            rect<int>(10,10,200,22), true) == NULL)
            printf("test null");
        else
            printf("text ok");
    */
        printf("try load mesh with smgr which were OK");
        IAnimatedMesh* mesh;
        mesh = smgr->getMesh("abeille2.obj");
        if (!mesh)
        {
            device->drop();
            return 1;
        }
        IAnimatedMeshSceneNode* node = smgr->addAnimatedMeshSceneNode( mesh );
     
     
        if (node)
        {
            node->setMaterialFlag(EMF_LIGHTING, false);
            node->setFrameLoop(0, 310);
            node->setMaterialTexture( 0, driver->getTexture("../../media/sydney.bmp") );
        }
     
     
        smgr->addCameraSceneNode(0, vector3df(0,30,-40), vector3df(0,5,0));
     
     
        while(device->run())
        {
     
            driver->beginScene(true, true, SColor(0,200,200,200));
     
            smgr->drawAll();
            guienv->drawAll();
     
            driver->endScene();
        }
     
        device->drop();
     
        return 0;
    }
    Log:

    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
    Active debugger config: GDB/CDB debugger:Default
    Building to ensure sources are up-to-date
    Selecting target: 
    Debug
    Adding source dir: C:\test\irrl\
    Adding source dir: C:\test\irrl\
    Adding file: C:\test\irrl\bin\Debug\irrl.exe
    Changing directory to: "C:/irrlicht 1.6/irrlicht-1.6.1/bin/Win32-gcc"
    Set variable: PATH=.;C:\irrlicht 1.6\irrlicht-1.6.1\lib\Win32-gcc;C:\MinGW\bin;C:\MinGW;C:\Program Files\Microsoft\jdk-11.0.12.7-hotspot\bin;C:\Windows\System32;C:\Windows;C:\Windows\System32\wbem;C:\Windows\System32\WindowsPowerShell\v1.0;C:\Windows\System32\OpenSSH;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files\NVIDIA Corporation\NVIDIA NvDLISR;C:\Program Files\dotnet;C:\Users\Sam\AppData\Local\Microsoft\WindowsApps;C:\Users\Sam\.dotnet\tools
    Starting debugger: C:\MinGW\bin\gdb.exe -nx -fullname -quiet  -args C:/test/irrl/bin/Debug/irrl.exe
    done
    Setting breakpoints
    Debugger name and version: GNU gdb (GDB) 7.6.1
    Child process PID: 3684
    Program received signal SIGSEGV, Segmentation fault.
    At C:\test\irrl\main.cpp:54
    console :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Irrlicht Engine version 1.6.1
    Personal  (Build 9200)
    fenetre ok
    driver ok
    guienv ok
    smgr ok
    try load mesh with smgr which were OK

Discussions similaires

  1. [cvBlobsLib]Probleme à l'execution avec des erreurs LNK2019
    Par Jim_Nastiq dans le forum Bibliothèques
    Réponses: 2
    Dernier message: 01/03/2007, 15h40
  2. [VB6]Probleme d'execution avec la commande Shell
    Par belfaigore dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 01/06/2006, 10h28
  3. probleme d'execution avec DEV C++
    Par lucky31 dans le forum C
    Réponses: 123
    Dernier message: 08/05/2006, 11h57
  4. Problème d'exécution avec wxWidgets
    Par GLDavid dans le forum wxWidgets
    Réponses: 3
    Dernier message: 10/11/2005, 11h44
  5. [System][EXEC] Probleme d'execution avec une commande parametrée.
    Par chicorico dans le forum Général Java
    Réponses: 15
    Dernier message: 20/05/2005, 16h07

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