Project

General

Profile

Windows » History » Version 2

Redmine Admin, 10/20/2008 03:06 PM

1 1 Redmine Admin
{{toc}}
2
3
h1. Windows
4
5
*Problèmes spécifiques à Windows*
6
7
h2. Edition de liens
8
9 2 Redmine Admin
h3{color:red}. +error LNK2001: symbole externe non resolu pour des objets ou fonctions définies dans Morph-M+
10 1 Redmine Admin
11
*+Explication+*
12
  
13
  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é.
14
15
*+Solution+*
16
17
    Une liste simple de choses à vérifier:
18
19
        * les .lib avec lesquelles il faut "linker" sont bien toutes présentes dans la section idoine de la définition du projet Visual
20
        * les en-têtes correspondent bien à la version des librairies qui ont été compilées
21
        * vous avez bien défini la macro: __MORPHEE_DYNAMIC_LIBRARY dans les options du preprocesseur.
22
23
h2. Compilation
24
25 2 Redmine Admin
h3{color:red}. +Visual n'arrive pas à trouver des fichiers qui pourtant existent+
26 1 Redmine Admin
27
*+Explication+*
28
29
    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
30
31
*+Solution+*
32
33
    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.
34
35 2 Redmine Admin
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+
36 1 Redmine Admin
37
*+Explication+*
38
39
    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.
40
41
*+Solution+*
42
43
    Désactiver l'option SAFE STL (ou qq soit son nom) dans VisualStudio 2005.