Bonjour,
J'ai un EXE qui utilise une DLL.
Dans mon EXE, j'ai une classe MyClass, j'appelle une fonction function(MyClass *pMyClass) en C située dans la DLL, en lui passant un pointeur pMyClass.
Dans ma fonction je reçois bien le pointeur pMyClass, avec l'adresse correcte de mon objet MyClass.
Lorsque j'accède à un membre de cet objet, je prends un GPF (Global Protection Fault). En effet, bien que l'adresse soit bonne, le membre en question, qui est un pointeur vers un buffer, est NULL.
Dans l'EXE:
Dans la DLL
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 MyClass { char *pBuffer; maMethode(); } MyClass::maMethode() { ....... pBuffer = new char [size]; function(this); ....... }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 function(MyClass *pMyClass) { ........ memcpy(pMyClass->pBuffer, something, sizeof(something)); ........ }
Le pointeur pMyClass est juste, par contre, pMyClass->pBuffer contient NULL
A noter que: En mode Debug, ça fonctionne parfaitement, mais en release, ça plante, comme si l'espace mémoire attribué à l'EXE était différent de celui attribué à la DLL.
Est-ce que quelqu'un aurait une idée sur ce problème?
Merci
Christian
Partager