Metafor

ULiege - Aerospace & Mechanical Engineering

User Tools

Site Tools


commit:2015:01_06

Commit 2015-01-06

Compilation Win XP x86

J'ai fait en sorte que le code recompile sous Windows XP. Ceci pour pouvoir générer une version 32 bits pour les étudiants.

Pourquoi ne pas utiliser Windows 7 x86 me direz-vous? Simplement parce que les binaires générés ne sont pas compatibles ni avec Windows XP ni avec Vista. Peu d'étudiants utilisent Windows XP mais Vista est encore présent. Une autre motivation pour garder des libs Windows XP est de pouvoir générer des exécutables pour Arcelor.

Le problème technique que j'ai rencontré est que les nouvelles commandes propres au C++11 ne sont pas compilables avec le Visual Studio 2008 et que Visual Studio 2012 n'est pas compatible avec Windows XP. La solution que j'ai trouvée est d'utiliser le compilateur Intel C++ 14 à travers le Visual Studio 2008. Ca fonctionne plus ou moins. J'ai tout de même dû modifier le code à plusieurs endroits:

  • l'objet nullptr du C++11 n'est pas reconnu (les fichiers .h restent ceux du Visual Studio 2008 et, malgré le fait qu'on utilise un compilateur très récent, on se retrouve avc un support C++11 moindre que celui qu'on a avec un Visual Studio récent). J'ai donc redéfini nullptr à NULL quand je suis sous Windows XP.
  • Les dérivations multiples impliquant WithDrawable ont posé problème (au link). Après beaucoup d'essais, j'ai résolu ça en intervertissant l'ordre des classes de base pour les classes concernées (WithDrawable doit être la dernière classe - voir p.expl. Element ou InteractionSet). J'ai pas compris mais ça marche.
  • J'ai dû exporter toutes les classes de mtDrawables. Je ne me souviens plus exactement pourquoi, mais quoi qu'il en soit, ça ne mange pas de pain.

J'essayerai de vérifier de temps en temps que le code reste compilable sous XP, le temps que Vista disparaisse et que Arcelor migre vers Win7.

Romain BOMAN 2015/01/06 07:45

commit/2015/01_06.txt · Last modified: 2016/03/30 15:23 by 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki