[Vb.Net] Libérer/décharger une dll

Bonjour, j’ai une application qui utilise une fonction statique de ma dll.

Le problème c’est que quand je lance cette méthode la premiere fois, tout se passe bien, mais la deuxième fois (et toutes les fois d’après), elle ne me donne pas de bons résultats.

J’aimerai contourner le pb en déchargeant cette dll à chaque appel pour que ça fasse comme si c’etait toujours la premiere fois :D)

PS: j’arrive pas à trouver pourquoi ça fonctionne pas la 2eme fois :wink:

Si c’est une DLL win32 native (et non du COM ou autre joyeuseté), je ne vois absolument pas pourquoi tu rends la fonction static, ton problème me parait normal.
Toujours est il que tu peux ajouter un flag lors de l’attachement de la DLL dans ton process, à DLL_PROCESS_ATTACH par exemple.

C’est une dll en c++ managé (clr) que j’appelle via vb.net. Ma fonction est static pour pas avoir à instancier l’objet de la classe…
Cela dit, le probleme reste le même si je déclare la fonction non-static.

En gros je veux forcer le programme à décharger completement la dll pour la recharger à chaque appel de ma fonction.

J’ai essayé avec les appdomain mais la dll n’est pas tout à fait déchargée, elle reste en mémoire :grrr:

pour les objets com j’utilise :
System.Runtime.InteropServices.Marshal.ReleaseComObject()

mais dans ce cas je ne sais pas du tout :confused:

Oué j’ai vu mais pour moi ça marche pas :frowning:

Fonctionmagique.Releasedll();

Salut,

Obj.dispose ? fonctionne pas
Tu as instancier ta "class" (dll) tu devrais trouver disposing ou dispose

Cordialement

www.troxsa.info

T’es sûr que tu rentre pas dans le cas du cache de dll de Microsoft ? (sans me servir de DLL dans ma vie de programmeur) je veux dire : même si tu fermes un prog, des dll traînent

Tu peux aussi faire une fonction clean() qui fait ça proprement, non?