Windows

Problèmes spécifiques à Windows

Edition de liens

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.

Compilation

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.

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.