[Résolu] Appel de destructeur après avoir utilisé une dll

Appel de destructeur après avoir utilisé une dll [Résolu] - C++ - Programmation

Marsh Posté le 24-05-2006 à 21:02:51    

Bonjour tout le monde,
 
J'ai fait une dll, dont le header est ci-dessous, et qui est utilisée par une autre classe au moyen de LoadLibrary, GetProcAddress et tout. J'aimerais détruire mon instance après avoir fini de l'utiliser ; seulement je ne vois pas comment faire, comme on ne peut pas appeler directement ~TestDll.
 

Code :
  1. #define EXPORT __declspec(dllexport)
  2. class TestDll
  3. {
  4. public:
  5. TestDll();
  6. ~TestDll();
  7. };
  8. extern "C" EXPORT TestDll* getTestDllInstance()
  9. {
  10. return new TestDll;
  11. }
  12. extern "C" EXPORT void destroyDllInstance()
  13. {
  14. // Que mettre ?
  15. }


 
Est-ce que quelqu'un saurait m'éclairer ?


Message édité par rnoizet le 24-05-2006 à 21:29:54
Reply

Marsh Posté le 24-05-2006 à 21:02:51   

Reply

Marsh Posté le 24-05-2006 à 21:18:10    

/me y connait rien
 
delete ?

Reply

Marsh Posté le 24-05-2006 à 21:24:01    

En fait, si dans mon programme je fais :

Code :
  1. typedef TestDll* (* TestDllConstructor)();
  2. HINSTANCE dll = LoadLibrary(TEXT("testDll.dll" ));
  3. TestDllConstructor testDllConstructor = (TestDllConstructor)GetProcAddress(dll, "getTestDllInstance" );
  4. TestDll *testDll = testDllConstructor();
  5. // des trucs
  6. delete testDll;
  7. FreeLibrary(dll);


ça ne fonctionne pas, car je ne passe pas par le destructeur (d'après VC++ en debug avec un breakpoint dans le destructeur), même en ayant mis delete.


Message édité par rnoizet le 24-05-2006 à 21:24:25
Reply

Marsh Posté le 24-05-2006 à 21:29:22    

Ah si en fait...il suffisait de mettre le breakpoint dans le destructeur et non en face de delete.


Message édité par rnoizet le 24-05-2006 à 21:33:45
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed