Bonjour,

Je developpe une DLL avec un POO :

Voici le code de 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
14
15
class Mere {
   Mere() {};
   virtual bool Test() { return true; }
};
class Fille : public Mere { //Classe derive
   Fille() {};
   bool Test() { return false; }
};
//Exportation d'un fonction pour la creation d'un objet
extern "C" bool __declspec(dllexport) __cdecl newClass(Mere* mere);
 
bool __declspec(dllexport) __cdecl newClass(Mere* mere) {
	acq = new Fille();	
    return ( acq != NULL) ;
}
Puis voici le code qui appelle la DLL :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
//charge la library
HINSTANCE dll = LoadLibrary( TEXT("mydll.dll") );
//Definie la fonction
typedef bool (*newClassFunc)(Mere* mere);
Mere* mere = NULL;
//Recupere l'adresse de la focntion dans la DLL
newClassFunc newClass = (newClassFunc)GetProcAddress(dll,"newClass");
newClass(mere);
bool res = mere.Test(); //Plantage
Donc il y a plantage sur la derniere ligne. Je sais pourquoi il plante car l'objet mere dans mon prog est en fait une classe fille. Donc si vous piger mon pb et que vous avez une solution pour faire une sorte d'héritage depuis un DLL, Merci d'avance