Partage
  • Partager sur Facebook
  • Partager sur Twitter

[QT+IrrLicht] Compilation error : Matrix4.h, kézako ?

(parce qu'il y en a qui sont motivés ^^)

    25 septembre 2008 à 14:57:39

    Bonjour tout le monde !

    C'est reparti pour un nouveau problème ! ^^
    J'utilise IrrLicht et Newton, et je compile avec Qt.
    Et ça refuse obstinément de marcher ^^.

    Voici ce que je fais :
    - J'écris mes sources avec CodeBlocks, puis je sauvegarde
    - Je lance le terminal spécial de Qt, me rend dans le dossier du projet, et je fais "qmake -project" et "qmake".
    - Je modifie le fichier .pro pour rajouter les dossiers d'Includes et les Libs Newton/IrrLicht
    - Je retourne dans le terminal, "qmake", "make". Et là, c'est le drame.

    Mon fichier .pro :

    ######################################################################
    # Automatically generated by qmake (2.01a) mer. 24. sept. 21:44:04 2008
    ######################################################################
    
    TEMPLATE = app
    TARGET = 
    DEPENDPATH += .
    INCLUDEPATH += C:/CodeBlocks/irr/include C:/CodeBlocks/NewtonSDK/sdk.
    LIBS += C:/CodeBlocks/NewtonSDK/sdk/lib_mt/newton.lib C:/CodeBlocks/irr/lib/Win32-gcc/libIrrlicht.a .
    
    # Input
    SOURCES += main.cpp
    


    Mon fichier main.cpp : (c'est un exemple tutorial pour Irrlicht et Newton)

    #include <Irrlicht.h>
    #include <newton.h>
    
    
    
    // use scale factor between Newton and IRR
    const float NewtonToIrr = 32.0f;
    const float IrrToNewton = (1.0f / NewtonToIrr);
    
    using namespace irr;
    
    
    #pragma comment(lib, "Irrlicht.lib")
    #pragma comment(lib, "Newton.lib")
    
    int main()
    {
       //create Newton world
       static NewtonWorld* nWorld = NewtonCreate (NULL, NULL);
       // set Irrlicht
       IrrlichtDevice *device = createDevice(video::EDT_SOFTWARE,
    	                           core::dimension2d<s32>(800,600), false);
    
       video::IVideoDriver* driver = device->getVideoDriver();
       scene::ISceneManager* smgr = device->getSceneManager();
    
       	// add mesh
       scene::IAnimatedMesh* mesh = smgr->getMesh("D:\\irrlicht-1.1\\media\\earth.x");
       scene::IAnimatedMeshSceneNode* beat = smgr->addAnimatedMeshSceneNode( mesh );
        if (beat)
    	{
    		beat->setMaterialFlag(video::EMF_LIGHTING, false);
    		beat->setMaterialTexture( 0, driver->getTexture("D:\\irrlicht-1.1\\media\\earth.bmp") );
    	}
    
    	core::aabbox3d<f32> box = beat->getBoundingBox();
    	core::vector3df size = box.getExtent() * IrrToNewton;
    	NewtonCollision* collision = NewtonCreateBox(nWorld, size.X, size.Y, size.Z, NULL);
    	static NewtonBody*  beat_Body = NewtonCreateBody(nWorld, collision);
    	NewtonReleaseCollision (nWorld, collision);
    
    	// set the body mass and inertia
    	NewtonBodySetMassMatrix (beat_Body, 1.0f, 5.0f, 1.0f, 5.0f);
    
    	//NewtonBodySetUserData(beat_Body, beat);
    	//NewtonBodySetDestructorCallback (beat_Body, DestroyPistonEvent);
    
    	core::matrix4 matrix = beat->getRelativeTransformation();
    	core::vector3df origin = matrix.getTranslation() * IrrToNewton;
    	matrix.setTranslation (origin);
    	NewtonBodySetMatrix(beat_Body, &matrix.M[0]);
    	// animate the body by setting the angular velocity
    	float omega[] = {0.0f, 10.0f, 0.0f};
    	NewtonBodySetOmega (beat_Body, &omega[0]);
    
        // add camera & hide cursor
    	smgr->addCameraSceneNode(0, core::vector3df(3,0,3), core::vector3df(0,0,0));
    	device->getCursorControl()->setVisible(false);
        // count FPS
       int lastFPS = -1;
    
       while(device->run())
       {
          driver->beginScene(true, true, video::SColor(255,100,101,140));
    	  //update the physics at the same rate as the render
    	   float fps = (float) driver->getFPS();
    	   if (fps > 0.0f)
    	       NewtonUpdate(nWorld, 1.0f / fps);
          // rotate node
    	  core::matrix4 mat;
    	  NewtonBodyGetMatrix(beat_Body, &mat.M[0]);
          //Set node position
    	  beat->setPosition(mat.getTranslation() * NewtonToIrr);
    	  // set node rotation
    	  core::vector3df euler;
    	  NewtonGetEulerAngle ( &mat.M[0], &euler.X);
    	  beat->setRotation(euler * (180.0f / 3.1416f));
          smgr->drawAll();
          driver->endScene();
    
    	  int fps_int = driver->getFPS();
          if (lastFPS  != fps_int)
          {
             core::stringw str = L"Irrlicht Engine - Quake 3 Map example [";
    		 str += driver->getName();
    		 str += "] FPS:";     str += fps_int;
    		 device->setWindowCaption(str.c_str());
    		 lastFPS = fps_int;
          }
       }
    
        // instead call
    	NewtonDestroyAllBodies (nWorld);
    	// finish newton & irrlicht
    	NewtonDestroy(nWorld);
       device->drop();
       return 0;
    }
    




    Mon message d'erreur à la console :


    C:\CodeBlocks\Projects\Poubelle\INQ>make
    mingw32-make -f Makefile.Debug
    mingw32-make[1]: Entering directory `C:/CodeBlocks/Projects/Poubelle/INQ'
    g++ -c -g -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -
    DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I"..\..
    \..\..\Qt\4.4.1\include\QtCore" -I"..\..\..\..\Qt\4.4.1\include\QtCore" -I"..\..
    \..\..\Qt\4.4.1\include\QtGui" -I"..\..\..\..\Qt\4.4.1\include\QtGui" -I"..\..\.
    .\..\Qt\4.4.1\include" -I"..\..\..\irr\include" -I"..\..\..\NewtonSDK\sdk." -I"c
    :\Qt\4.4.1\include\ActiveQt" -I"debug" -I"." -I"..\..\..\..\Qt\4.4.1\mkspecs\win
    32-g++" -o debug\main.o main.cpp
    main.cpp:13: warning: ignoring #pragma comment
    main.cpp:14: warning: ignoring #pragma comment
    ../../../irr/include/matrix4.h: In function `int main()':
    ../../../irr/include/matrix4.h:316: error: `irr::f32 irr::core::CMatrix4<irr::f3
    2>::M[16]' is private
    main.cpp:51: error: within this context
    ../../../irr/include/matrix4.h:316: error: `irr::f32 irr::core::CMatrix4<irr::f3
    2>::M[16]' is private
    main.cpp:71: error: within this context
    ../../../irr/include/matrix4.h:316: error: `irr::f32 irr::core::CMatrix4<irr::f3
    2>::M[16]' is private
    main.cpp:76: error: within this context
    mingw32-make[1]: *** [debug/main.o] Error 1
    mingw32-make[1]: Leaving directory `C:/CodeBlocks/Projects/Poubelle/INQ'
    mingw32-make: *** [debug] Error 2




    Quand j'ai vu que c'était Matrix4.h qui faisait tout planter, je me suis dit "Normal, il est pas encore sorti !" xD (hum... pardon)
    Lorsque je compile avec un main.cpp simplifié (c'est a dire avec "int main() return 0;"), ça marche.
    J'ai l'impression qu'il a du mal avec les libs. Je ne sais pas si je les ais insérées correctement dans mon .pro, et les deux #pragma qui sont ignorés ne chargent pas les libs non plus (ce qui est normal... je pense :$ ).

    Quelqu'un pourrait m'aider svp sos ? ^^
    Merci d'avance,

    Return Zér0;

    PS : Quand je compile sans utiliser les matrices de l'exemple, il m'indique juste après avoir loadé les Libs que :
    C:\MinGW\bin\..\lib\gcc\mingw32\3.4.2\..\..\..\..\mingw32\bin\ld.exe: .: No such
     file: Permission denied
    • Partager sur Facebook
    • Partager sur Twitter
      28 septembre 2008 à 19:36:25

      Bon, en fait on va simplifier (désolé pour l'excès de détails ci-dessus).

      Mon problème avec QT : les librairies IrrLicht et Newton ne fonctionnent pas.

      J'ai modifié la ligne "LIBS" au fichier .pro :

      ######################################################################
      # Automatically generated by qmake (2.01a) mer. 24. sept. 21:44:04 2008
      ######################################################################
      
      TEMPLATE = app
      TARGET = 
      DEPENDPATH += .
      INCLUDEPATH += C:/CodeBlocks/irr/include C:/CodeBlocks/NewtonSDK/sdk.
      LIBS += C:/CodeBlocks/irr/lib/Win32-gcc/libIrrlicht.a C:/CodeBlocks/NewtonSDK/sdk/lib_st/newton.lib
      
      # Input
      SOURCES += main.cpp
      



      Voici mon main.cpp :
      #include <Irrlicht.h>
      #include <newton.h>
      
      
      using namespace irr;
      
      /* Les pragma censés intégrer les librairies sont tirés d'un totorial, mais je les ai
      mis en commentaires parce qu'ils ne marchaient pas de toute façon */
      //#pragma comment(lib, "Irrlicht.lib")
      //#pragma comment(lib, "Newton.lib")
      
      int main()
      {
         //On initialise IrrLicht et Newton
         static NewtonWorld* nWorld = NewtonCreate (NULL, NULL);
         IrrlichtDevice *device = createDevice(video::EDT_SOFTWARE, core::dimension2d<s32>(800,600), false);
      
         //On nettoie avant de partir...
         NewtonDestroyAllBodies (nWorld);
         NewtonDestroy(nWorld);
         device->drop();
      
         return EXIT_SUCCESS;
      }
      


      Et voilà ce que à la console j'ai quand je veux compiler :
      (en plus du message d'erreur "ld.exe a cessé de fonctionner")

      C:\CodeBlocks\Projects\Poubelle\INQ>make
      mingw32-make -f Makefile.Debug
      mingw32-make[1]: Entering directory `C:/CodeBlocks/Projects/Poubelle/INQ'
      g++ -c -g -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -
      DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I"..\..
      \..\..\Qt\4.4.1\include\QtCore" -I"..\..\..\..\Qt\4.4.1\include\QtCore" -I"..\..
      \..\..\Qt\4.4.1\include\QtGui" -I"..\..\..\..\Qt\4.4.1\include\QtGui" -I"..\..\.
      .\..\Qt\4.4.1\include" -I"..\..\..\irr\include" -I"..\..\..\NewtonSDK\sdk." -I"c
      :\Qt\4.4.1\include\ActiveQt" -I"debug" -I"." -I"..\..\..\..\Qt\4.4.1\mkspecs\win
      32-g++" -o debug\main.o main.cpp
      g++ -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-rel
      oc -mthreads -Wl -Wl,-subsystem,windows -o debug\INQ.exe debug/main.o  -L"c:\Qt\
      4.4.1\lib" -lmingw32 -lqtmaind C:/CodeBlocks/irr/lib/Win32-gcc/libIrrlicht.a C:/
      CodeBlocks/NewtonSDK/sdk/lib_st/newton.lib -lQtGuid4 -lQtCored4
      Warning: .drectve `/DEFAULTLIB:"libcp" /DEFAULTLIB:"uuid.lib" /DEFAULTLIB:"uuid.
      lib" /DEFAULTLIB:"LIBC" /DEFAULTLIB:"OLDNAMES" ' unrecognized
      Warning: .drectve `/DEFAULTLIB:"libcp" /DEFAULTLIB:"uuid.lib" /DEFAULTLIB:"uuid.
      lib" /DEFAULTLIB:"LIBC" /DEFAULTLIB:"OLDNAMES" ' unrecognized
      Warning: .drectve `/DEFAULTLIB:"libcp" /DEFAULTLIB:"uuid.lib" /DEFAULTLIB:"uuid.
      lib" /DEFAULTLIB:"LIBC" /DEFAULTLIB:"OLDNAMES" ' unrecognized
      Warning: .drectve `/DEFAULTLIB:"libcp" /DEFAULTLIB:"uuid.lib" /DEFAULTLIB:"uuid.
      lib" /DEFAULTLIB:"LIBC" /DEFAULTLIB:"OLDNAMES" ' unrecognized
      Warning: .drectve `/DEFAULTLIB:"libcp" /DEFAULTLIB:"uuid.lib" /DEFAULTLIB:"uuid.
      lib" /DEFAULTLIB:"LIBC" /DEFAULTLIB:"OLDNAMES" ' unrecognized
      Warning: .drectve `/DEFAULTLIB:"libcp" /DEFAULTLIB:"uuid.lib" /DEFAULTLIB:"uuid.
      lib" /DEFAULTLIB:"LIBC" /DEFAULTLIB:"OLDNAMES" ' unrecognized
      Warning: .drectve `/DEFAULTLIB:"libcp" /DEFAULTLIB:"uuid.lib" /DEFAULTLIB:"uuid.
      lib" /DEFAULTLIB:"LIBC" /DEFAULTLIB:"OLDNAMES" ' unrecognized
      Warning: .drectve `/DEFAULTLIB:"libcp" /DEFAULTLIB:"uuid.lib" /DEFAULTLIB:"uuid.
      lib" /DEFAULTLIB:"LIBC" /DEFAULTLIB:"OLDNAMES" ' unrecognized
      Warning: .drectve `/DEFAULTLIB:"libcp" /DEFAULTLIB:"uuid.lib" /DEFAULTLIB:"uuid.
      lib" /DEFAULTLIB:"LIBC" /DEFAULTLIB:"OLDNAMES" ' unrecognized
      Warning: .drectve `/DEFAULTLIB:"libcp" /DEFAULTLIB:"uuid.lib" /DEFAULTLIB:"uuid.
      lib" /DEFAULTLIB:"LIBC" /DEFAULTLIB:"OLDNAMES" ' unrecognized
      Warning: .drectve `/DEFAULTLIB:"libcp" /DEFAULTLIB:"uuid.lib" /DEFAULTLIB:"uuid.
      lib" /DEFAULTLIB:"LIBC" /DEFAULTLIB:"OLDNAMES" ' unrecognized
      Warning: .drectve `/DEFAULTLIB:"libcp" /DEFAULTLIB:"uuid.lib" /DEFAULTLIB:"uuid.
      lib" /DEFAULTLIB:"LIBC" /DEFAULTLIB:"OLDNAMES" ' unrecognized
      Warning: .drectve `/DEFAULTLIB:"libcp" /DEFAULTLIB:"uuid.lib" /DEFAULTLIB:"uuid.
      lib" /DEFAULTLIB:"LIBC" /DEFAULTLIB:"OLDNAMES" ' unrecognized
      Warning: .drectve `/DEFAULTLIB:"libcp" /DEFAULTLIB:"uuid.lib" /DEFAULTLIB:"uuid.
      lib" /DEFAULTLIB:"LIBC" /DEFAULTLIB:"OLDNAMES" ' unrecognized
      Warning: .drectve `/DEFAULTLIB:"libcp" /DEFAULTLIB:"uuid.lib" /DEFAULTLIB:"uuid.
      lib" /DEFAULTLIB:"LIBC" /DEFAULTLIB:"OLDNAMES" ' unrecognized
      Warning: .drectve `/DEFAULTLIB:"libcp" /DEFAULTLIB:"uuid.lib" /DEFAULTLIB:"uuid.
      lib" /DEFAULTLIB:"LIBC" /DEFAULTLIB:"OLDNAMES" ' unrecognized
      Warning: .drectve `/DEFAULTLIB:"libcp" /DEFAULTLIB:"uuid.lib" /DEFAULTLIB:"uuid.
      lib" /DEFAULTLIB:"LIBC" /DEFAULTLIB:"OLDNAMES" ' unrecognized
      Warning: .drectve `/DEFAULTLIB:"libcp" /DEFAULTLIB:"uuid.lib" /DEFAULTLIB:"uuid.
      lib" /DEFAULTLIB:"LIBC" /DEFAULTLIB:"OLDNAMES" ' unrecognized
      Warning: .drectve `/DEFAULTLIB:"libcp" /DEFAULTLIB:"uuid.lib" /DEFAULTLIB:"uuid.
      lib" /DEFAULTLIB:"LIBC" /DEFAULTLIB:"OLDNAMES" ' unrecognized
      Warning: .drectve `/DEFAULTLIB:"libcp" /DEFAULTLIB:"uuid.lib" /DEFAULTLIB:"uuid.
      lib" /DEFAULTLIB:"LIBC" /DEFAULTLIB:"OLDNAMES" ' unrecognized
      Warning: .drectve `/DEFAULTLIB:"libcp" /DEFAULTLIB:"uuid.lib" /DEFAULTLIB:"uuid.
      lib" /DEFAULTLIB:"LIBC" /DEFAULTLIB:"OLDNAMES" ' unrecognized
      Warning: .drectve `/DEFAULTLIB:"libcp" /DEFAULTLIB:"uuid.lib" /DEFAULTLIB:"uuid.
      lib" /DEFAULTLIB:"LIBC" /DEFAULTLIB:"OLDNAMES" ' unrecognized
      Warning: .drectve `/DEFAULTLIB:"libcp" /DEFAULTLIB:"uuid.lib" /DEFAULTLIB:"uuid.
      lib" /DEFAULTLIB:"LIBC" /DEFAULTLIB:"OLDNAMES" ' unrecognized
      Warning: .drectve `/DEFAULTLIB:"libcp" /DEFAULTLIB:"uuid.lib" /DEFAULTLIB:"uuid.
      lib" /DEFAULTLIB:"LIBC" /DEFAULTLIB:"OLDNAMES" ' unrecognized
      Warning: .drectve `/DEFAULTLIB:"libcp" /DEFAULTLIB:"uuid.lib" /DEFAULTLIB:"uuid.
      lib" /DEFAULTLIB:"LIBC" /DEFAULTLIB:"OLDNAMES" ' unrecognized
      Warning: .drectve `/DEFAULTLIB:"libcp" /DEFAULTLIB:"uuid.lib" /DEFAULTLIB:"uuid.
      lib" /DEFAULTLIB:"LIBC" /DEFAULTLIB:"OLDNAMES" ' unrecognized
      Warning: .drectve `/DEFAULTLIB:"libcp" /DEFAULTLIB:"uuid.lib" /DEFAULTLIB:"uuid.
      lib" /DEFAULTLIB:"LIBC" /DEFAULTLIB:"OLDNAMES" ' unrecognized
      Warning: .drectve `/DEFAULTLIB:"libcp" /DEFAULTLIB:"uuid.lib" /DEFAULTLIB:"uuid.
      lib" /DEFAULTLIB:"LIBC" /DEFAULTLIB:"OLDNAMES" ' unrecognized
      Warning: .drectve `/DEFAULTLIB:"libcp" /DEFAULTLIB:"uuid.lib" /DEFAULTLIB:"uuid.
      lib" /DEFAULTLIB:"LIBC" /DEFAULTLIB:"OLDcollect2: ld returned 5 exit status
      mingw32-make[1]: *** [debug\INQ.exe] Error 1
      mingw32-make[1]: Leaving directory `C:/CodeBlocks/Projects/Poubelle/INQ'
      mingw32-make: *** [debug] Error 2



      Note : Quand je compile seulement avec IrrLicht, ça semble fonctionner. J'ai peut-être choisi la mauvaise librairie pour Newton ? (j'ai essayé les 4 pourtant...)

      Merci d'avance !
      Griffe.



      Mon problème est résolu, merci quand même !
      J'incluait la mauvaise librairie de Newton. Au lieu d'utiliser le "Newton.lib" du dossier "lib_st", il fallait utiliser celui du dossier "dll".
      Mon autre problème quand à lui, avec Matrix4.h de chez IrrLicht, fait l'objet d'un nouveau sujet.
      • Partager sur Facebook
      • Partager sur Twitter

      [QT+IrrLicht] Compilation error : Matrix4.h, kézako ?

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown