Project

General

Profile

Windows » History » Revision 3

Revision 2 (Redmine Admin, 10/20/2008 03:06 PM) → Revision 3/4 (Redmine Admin, 10/20/2008 03:12 PM)

{{toc}} 

 h1. Windows 

 *Problèmes spécifiques à Windows* 

 h2()={color:blue}. h2. Edition de liens 

 h3{color:red}. +error LNK2001: symbole externe non resolu pour des objets ou fonctions définies dans Morph-M+ 

 *+Explication+* 
  
   Lors de la compilation d'un programme qui utilise Morph-M à travers des liens dynamiques (c'est le cas par défaut pour les projets de types "addons"), le compilateur vérifie que la vesion compilée du programme aura bien accès à tous les éléments qu'il utilise et qui sont définis à l'extérieur du programme lui même. L'erreur ici stipule qu'au moins un des éléments n'est pas accessible dans les dll avec lesquelles le programme est lié. 

 *+Solution+* 

     Une liste simple de choses à vérifier: 

         * les .lib avec lesquelles il faut "linker" sont bien toutes présentes dans la section idoine de la définition du projet Visual 
         * les en-têtes correspondent bien à la version des librairies qui ont été compilées 
         * vous avez bien défini la macro: __MORPHEE_DYNAMIC_LIBRARY dans les options du preprocesseur. 

 h2()={color:blue}. h2. Compilation 

 h3{color:red}. +Visual n'arrive pas à trouver des fichiers qui pourtant existent+ 

 *+Explication+* 

     Pour faire court, la longeur des paths ABSOLUS est limitée à la variable MAX_PATH de l'api Windows qui est égale à 260 (caractères) ! Un explication du problème est disponible sur cette page 

 *+Solution+* 

     Certains ont proposé de boycotter windows :) L'idée est plaisante mais lorsque ce n'est pas possible, il faut juste éviter de mettre des noms trops longs à vos path de compilations, en essayant par exemple de faire sortir vos objets de compilations près de la racine d'un disque dur par exemple. 

 h3{color:red}. +VisualStudio 2005 me met tout d'un coup plein d'erreurs liées à des manipulations sur des itérateurs et d'autres trucs bizarres+ 

 *+Explication+* 

     VisualStudio2005 a une option "SAFE_STL" qui rend le compilateurs très strict sur certain problèmes notamment en excluant toute pratique qui n'apparaît pas explicitement dans le standard C++ (même si ledit standard n'interdit pas ladite pratique). D'autres compilateurs comme gcc possèdent aussi une option de ce style, mais à l'heure où ces lignes sont écrite, il semble que les développeurs du monde entier évitent d'utiliser ces options. 

 *+Solution+* 

     Désactiver l'option SAFE STL (ou qq soit son nom) dans VisualStudio 2005.