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

Qt Discussion :

Création d'une zone d'affichage avec OGRE


Sujet :

Qt

  1. #1
    Membre averti
    Inscrit en
    Août 2007
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 24
    Par défaut Création d'une zone d'affichage avec OGRE
    Bonjour,

    J'ai suivis l'article « Intégrer Ogre à Qt » pour la création d'un widget OGRE, j'ai adapté le *.pro :

    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
    CONFIG -= debug
    CONFIG += release
     
    win32 {
    	LIBS += -L"C:/Program Files/OgreSDK/lib"
    }	
    CONFIG(debug, debug|release) {
    	LIBS += -lOgreGUIRenderer_d -lOgreMain_d
    }
    CONFIG(release, debug|release) {
    	LIBS += -lOgreGUIRenderer -lOgreMain
    }
     
    HEADERS += ogrewidget.h
     
    SOURCES += main.cpp \
    		   ogrewidget.cpp
    Mais voici l'erreur que j'obtiens lors du make :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    mingw32-make -f Makefile.Release
    mingw32-make[1]: Entering directory `C:/Qt/Tests/tmp'
    g++ -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc -Wl,-s -mthreads -Wl -Wl,-subsystem,windows -o release\qt_ogre.exe release/main.o release/ogrewidget.o release/moc_ogrewidget.o  -L"c:\Qt\4.5.0\lib" -lmingw32 -lqtmain "-LC:/Program Files/OgreSDK/lib" -lOgreGUIRenderer -lOgreMain -lQtGui4 -lQtCore4
    C:\MinGW\bin\..\lib\gcc\mingw32\3.4.2\..\..\..\..\mingw32\bin\ld.exe: cannot find -lOgreGUIRenderer
    collect2: ld returned 1 exit status
    mingw32-make[1]: *** [release\qt_ogre.exe] Error 1
    mingw32-make[1]: Leaving directory `C:/Qt/Tests/tmp'
    mingw32-make: *** [release] Error 2
    Merci d'avance de votre aide

  2. #2
    Membre Expert

    Avatar de IrmatDen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 727
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 727
    Par défaut
    Salut,

    Comme on peut le voir dans la ligne de commande de liaison, le répertoire indiquant où les trouver les bibliothèques d'Ogre n'est pas pris en compte:
    "-LC:/Program Files/OgreSDK/lib"

    Les espaces et les .pro ne font pas bon ménage. Il faudrait que tu installes le SDK dans un path ne contenant pas d'espaces.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 67
    Par défaut
    ou que tu écrives Progra~1 au lieu de Program Files

  4. #4
    Membre averti
    Inscrit en
    Août 2007
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 24
    Par défaut
    J'ai mis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    win32 {
    	LIBS += -LC:/Progra~1/OgreSDK/lib
    }
    Mais il me continu de dire que « -lOgreGUIRenderer » est introuvable... Notez qu'il n'y a que deux fichiers dans ce dossier : libode.a et libode_d.a

  5. #5
    Membre Expert

    Avatar de IrmatDen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 727
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 727
    Par défaut
    Ah, bah forcément, ça aide pas... Revérifie ton installation de Ogre ou recompile le.

  6. #6
    Membre averti
    Inscrit en
    Août 2007
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 24
    Par défaut
    J'ai re-téléchargé OGRE (« OGRE 1.6.1 SDK for Code::Blocks + MinGW C++ Toolbox ») et je l'ai réinstallé (et ce coup-ci dans un répertoire sans espace), mais j'ai toujours que deux fichiers *.a dans le dossier lib/ ...

  7. #7
    Membre Expert

    Avatar de IrmatDen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 727
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 727
    Par défaut
    Désolé, ça fait un bout de temps que j'ai pas utilisé la version SDK. Fait une recherche sur *.lib dans ton dossier. (Ou plutôt *.a puisque tu utilises la version mingw)

  8. #8
    Membre averti
    Inscrit en
    Août 2007
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 24
    Par défaut
    Ce ceux bien les seuls fichiers *.a de tout la SDK

  9. #9
    Membre Expert

    Avatar de IrmatDen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 727
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 727
    Par défaut
    Ce n'est pas un problème en fait, dixit ce tuto sur l'utilisation du sdk avec MinGW :
    Note: with MinGW gcc 3.4.5 you can link directly against dll's built by gcc 3.4.5 and do not require an import lib. This is the same setup on Linux where you link directly to the shared object (.so). This is why the SDK does not come with import libs for Ogre. You don't need them.
    Donc au lieu de "C:/Progra~1/OgreSDK/lib", ce sera plutôt C:/Progra~1/OgreSDK/bin/debug ou C:/Progra~1/OgreSDK/bin/release selon le type de build.

  10. #10
    Membre averti
    Inscrit en
    Août 2007
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 24
    Par défaut
    Génial ça compile parfaitement, merci !

    ...mais lors de l'exécution le programme crash, voici ce que le log m'en dit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    23:18:03: OGRE EXCEPTION(7:InternalErrorException): Could not load dynamic library .\RenderSystem_Direct3D9.  System Error: Le module spécifié est introuvable.
     
     in DynLib::load at c:\Ogre_161_tag\OgreMain\src\OgreDynLib.cpp (line 80)
    (Le programme a crashé avant ça mais il fallait juste mettre Plugins.cfg à côté de l'exécutable).

    Allez on va l'avoir

  11. #11
    Membre Expert

    Avatar de IrmatDen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 727
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 727
    Par défaut
    Il te dit qu'il ne trouve pas la dll... Tu l'as bien placé (la bonne version) à côté de l'exe ?

    PS: T'as déjà utilisé une librairie avant ??

  12. #12
    Membre averti
    Inscrit en
    Août 2007
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 24
    Par défaut
    Oui j'ai déjà utilisé plusieurs bibliothèques avant ça (SDL, SDL_Image, FmodEx, Irrlicht), sauf que j'aurais pas douté que c'était une DLL qui manquait, puisqu'en général le programme ne commence pas son exécution et affiche « ... n'a pas pu démarrer car ....dll est introuvable, la réinstallation de l'application peut régler ce problème. », et le log ne met pas l'extension du fichier DLL...

    Bon j'ai rajouté la DLL, j'ai réessayé et nouveau plantage, alors j'ai mis une deuxième DLL nécessaire, puis une troisième, etc. jusqu'à 6 DLL, sauf qu'il me dit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    10:57:51: OGRE EXCEPTION(7:InternalErrorException): Could not load dynamic library .\Plugin_CgProgramManager.  System Error: Le module spécifié est introuvable.
     
     in DynLib::load at c:\Ogre_161_tag\OgreMain\src\OgreDynLib.cpp (line 80)
    Or j'ai bien mis « Plugin_CgProgramManager.dll » dans le dossier de l'exécutable.

    EDIT : Ah ok il fallait aussi mettre « cg.dll » ainsi que d'autre DLL. En termes de légèrté j'ai connu mieux, 10 DLL pour 15,6 Mio au final... L'application se lance et marche avec succès .

    En tout cas, un gros merci à toi IrmatDen, c'est pas la lib la plus facile que j'ai eu à installer xD.
    Bye.

  13. #13
    Membre Expert

    Avatar de IrmatDen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 727
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 727
    Par défaut
    La grosse différence est que tout ça, c'est des plugins. Le message que tu as avec les autres, ce sont des dlls chargées avec l'application (comme le runtime C et C++). Tu aurais eu ce message pour OgreMain mais pas pour les autres.

    Ogre charge les dlls que tu lui demandes (dans le fichier plugins.cfg), et s'il ne peut pas chargé ce que tu veux, il considère que c'est une erreur, donc balance une exception. A toi de régler plugins.cfg pour contenir juste ce qu'il te faut

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

Discussions similaires

  1. Création d'une zone avec largeur modifiable
    Par Jamal MELLAL dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 03/12/2012, 19h25
  2. Réponses: 4
    Dernier message: 07/08/2008, 09h34
  3. Réponses: 3
    Dernier message: 25/03/2008, 18h17
  4. Réponses: 2
    Dernier message: 05/01/2006, 00h08
  5. Création d'une variable de session avec un ID
    Par PrinceMaster77 dans le forum ASP
    Réponses: 4
    Dernier message: 18/10/2004, 10h28

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