Bonjour à tous,

J'ai regardé sur le forum et sur le net, et je n'ai trouvé aucune réponse précise à mon problème.

Je tourne sous Ubuntu. Je souhaite faire tourner un projet existant sur mon poste, en utilisant OpenSG, Qt et ODE.

Je suis entrain d'installer OpenSG avec les contribs pour activer ODE. J'ai pour cela téléchargé les sources de la version OpenSG 1.8, les sources des Contribs, et ODE.
J'ai compilé ODE sans soucis, le tout installé dans /usr/local/[include-lib].
J'ai par contre du mal à compiler OpenSG en incluant les physics. J'utilise le script configure, avec la commande suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
./configure  --enable-gif --enable-glut --enable-jpg --enable-png --enable-tif --with-add-libdir=/usr/local/lib/ --with-add-lib=ode:ode
Cependant lorsque je fais un appel à make, j'obtiens la trace suivante :
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
cd Builds/i686-pc-linux-gnu* && make dbg
make[1]: entrant dans le répertoire « /home/koni/bin/OpenSG/Builds/i686-pc-linux-gnu-g++ »
make[2]: entrant dans le répertoire « /home/koni/bin/OpenSG/Builds/i686-pc-linux-gnu-g++ »
make[3]: entrant dans le répertoire « /home/koni/bin/OpenSG/Builds/i686-pc-linux-gnu-g++/BaseLib »
/home/koni/bin/OpenSG/Common/commonBuildDetect.mk:43: Detected DBG
/home/koni/bin/OpenSG/Common/commonBuildDetect.mk:59: Detected Shared Lib
make[3]: quittant le répertoire « /home/koni/bin/OpenSG/Builds/i686-pc-linux-gnu-g++/BaseLib »
make[3]: entrant dans le répertoire « /home/koni/bin/OpenSG/Builds/i686-pc-linux-gnu-g++/SystemLib »
/home/koni/bin/OpenSG/Common/commonBuildDetect.mk:43: Detected DBG
/home/koni/bin/OpenSG/Common/commonBuildDetect.mk:59: Detected Shared Lib
make[3]: quittant le répertoire « /home/koni/bin/OpenSG/Builds/i686-pc-linux-gnu-g++/SystemLib »
make[3]: entrant dans le répertoire « /home/koni/bin/OpenSG/Builds/i686-pc-linux-gnu-g++/WindowXLib »
/home/koni/bin/OpenSG/Common/commonBuildDetect.mk:43: Detected DBG
/home/koni/bin/OpenSG/Common/commonBuildDetect.mk:59: Detected Shared Lib
make[3]: quittant le répertoire « /home/koni/bin/OpenSG/Builds/i686-pc-linux-gnu-g++/WindowXLib »
make[3]: entrant dans le répertoire « /home/koni/bin/OpenSG/Builds/i686-pc-linux-gnu-g++/WindowGLUTLib »
/home/koni/bin/OpenSG/Common/commonBuildDetect.mk:43: Detected DBG
/home/koni/bin/OpenSG/Common/commonBuildDetect.mk:59: Detected Shared Lib
make[3]: quittant le répertoire « /home/koni/bin/OpenSG/Builds/i686-pc-linux-gnu-g++/WindowGLUTLib »
make[2]: quittant le répertoire « /home/koni/bin/OpenSG/Builds/i686-pc-linux-gnu-g++ »
make[1]: quittant le répertoire « /home/koni/bin/OpenSG/Builds/i686-pc-linux-gnu-g++ »
On voit bien qu'il construit toutes les bibliothèques de OpenSG, mais rien pour les contribs.

J'ai par ailleurs essayé d'utiliser le script scons avec l'option
Code : Sélectionner tout - Visualiser dans une fenêtre à part
contrib_physics=/usr/local/lib/
Mais les librairies construites font planter l'application dés que l'on tente de compiler avec -lOSGContrib. Si je regarde la taille des .so créés par les deux méthodes, on voit des différences flagrantes de tailles (celles générées pas scons sont bien plus petites).

Je ne sais pas si je me suis bien expliqué, j'ai un peu la tête dedans et ai du mal à en sortir, voila trois jours que je suis dessus. Donc si vous avez des idées !!
Merci


Résolu :
Finalement j'ai complètement recompilé ODE
Code : Sélectionner tout - Visualiser dans une fenêtre à part
./configure & make & make install
Ensuite j'ai recompilé OpenSG en utilisant uniquement Scons
Code : Sélectionner tout - Visualiser dans une fenêtre à part
contrib_physics=/usr/local/lib/
J'ai exporté les librairies et les headers :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
sudo cp -r Build/linux-gcc/installed/include/OpenSG/ /usr/local/include/
sudo cp -r Build/linux-gcc/installed/lib/opt/*.so /usr/local/lib/
Ensuite, j'ai compilé mon appli, et comme avant, erreur à l'appel de osgInit :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
ODE INTERNAL ERROR 1: assertion "g_bODEInitialized" failed in dCloseODE()
J'ai corrigé le soucis en ajoutant l'appel à la fonction d'initialisation de ODE :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
#include <ode/ode.h> 
...
OSG_USING_NAMESPACE
 
int 
main(int argc, char **argv) {
  dInitODE();
  osgInit(argc,argv);
  ...
}
Et la tout marche bien ! J'espère que ça pourra aider quelqu'un.