Metafor

ULiege - Aerospace & Mechanical Engineering

User Tools

Site Tools


commit:2017:05_19

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Last revisionBoth sides next revision
commit:2017:05_19 [2017/05/19 08:19] bomancommit:2017:05_19 [2017/05/19 08:22] boman
Line 3: Line 3:
 ===== Portage MinGW ===== ===== Portage MinGW =====
  
-Je reconstruit une version x86 de Metafor pour anticiper la rentrée prochaine et conserver la compatibilité MinGW (pour rappel, la version x86 est compilée avec gcc sous Windows pour pouvoir tourner sur n'importe quelle machine, meme Vista, voire XP ; ce que ne permet pas le Visual Studio).+J'ai reconstruit une version Windows x86 de Metafor pour anticiper la rentrée prochaine et conserver la compatibilité MinGW. Pour rappel, la version x86 est compilée avec gcc sous Windows pour pouvoir tourner sur n'importe quelle machine, meme Vista, voire XP ; ce que ne permet pas le Visual Studio.
  
 La compatibilité du code MinGW avait été perdue. Le problème récurent provient de l'exportation de templates instanciés explicitement. Autrement dit, il s'agit de classes templates compilées dans une DLL et qui doivent être appelés dans une autre. J'ai par exemple dû ajouter une instanciation explicite des ''StickingElements''. Ces éléments sont instanciés dans ''mtElements'' et utilisés dans ''mtDrawables''. Si on ne gère pas correctement l'instancation explicite, le mot clef ''__declspec(dllexport)'' est ignoré lors de la création de la première DLL, ce qui provoque un "unresolved" lors du link de la seconde. Evidemment, pour compliquer les choses, chaque compilateur gère ça différemment. certains permettent une instanciation explicite même si le template n'est pas encore tout à fait défini (c'est le cas de ''gcc''); et d'autres pas (''clang'').  La compatibilité du code MinGW avait été perdue. Le problème récurent provient de l'exportation de templates instanciés explicitement. Autrement dit, il s'agit de classes templates compilées dans une DLL et qui doivent être appelés dans une autre. J'ai par exemple dû ajouter une instanciation explicite des ''StickingElements''. Ces éléments sont instanciés dans ''mtElements'' et utilisés dans ''mtDrawables''. Si on ne gère pas correctement l'instancation explicite, le mot clef ''__declspec(dllexport)'' est ignoré lors de la création de la première DLL, ce qui provoque un "unresolved" lors du link de la seconde. Evidemment, pour compliquer les choses, chaque compilateur gère ça différemment. certains permettent une instanciation explicite même si le template n'est pas encore tout à fait défini (c'est le cas de ''gcc''); et d'autres pas (''clang''). 
commit/2017/05_19.txt · Last modified: 2017/05/19 08:32 by boman

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki