Bonjour,

Mon problème est plutôt délicat, je vais donc essayé d'être le plus clair possible.
Nous sommes entrain de faire la migration de nos projets de VS2005 à VS2010.

Nous avons:
* Un projet "core".
* Un projet "ui" qui permet de tester les fonctionnalité du "core"
* Un projet "serveur" qui utilise le "core"

"ui" et "core" font parties de la même solution.
"server" link à la compilation avec les .lib de "core"

L'utilisation de "ui" et "core" fonctionne bien.
C'est l'utilisation de "server" qui pose problème.

Si le sénario suivant ce produit: "server" instancie un objet "obj1core" appartenant à "core" et "obj1core" instancie lui même un objet "obj2core" appartenant également à "core".
Depuis le code de "server" nous pouvons demander à "obj1core" de nous retourner un pointeur sur "obj2core". Cela fonctionne, et le débuguer nous montre que le pointeur pointe bien sur un espace mémoire alloué.
Par contre, si nous appelons une fonction sur "obj2core", disons "obj2core->anyFunc()", le this-pointeur à l'intérieur de anyFunc() est nul.

Voici un petit exemple simplifié (mais analogue) pour expliquer mon problème
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
void aFuncInServer()
{
  Obj1core o1;
  Obj2core *o2 = o1.getO2(); // Fonctionne, il est possible de parcourir o2 avec le débugueur
  o2->anyFunc() // Leve une exception "writing access violation", ca le 'this' pointeur est null dans anyFunc
}
 
class Obj1core
{
  Obj2core *o2;
 
  public:
  Obj1core()
  {
    o2 = new Obj2core();
    o2->anyFunc(); // Fonctionne, le résultat est visible au débugueur
  }
 
  Obj2core* getO2() {return o2;}
 
  [...]
};
 
 
class Obj2core
{
  char* str;
 
  public:
  Obj2core()
  {
    str = new char[5];
  }
 
  anyFunc()
  {
    str[0] = 'c'; // Si l'appel vient de aFuncInServer 'this' est null, si l'appel vient de o1 'this' a la bonne valeur
  }
}
Toute aide me sera très utile et je vous en remercie d'avance