Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
958 connectés 

  FORUM HardWare.fr
  Programmation

  Soft pour libérer un dll utilisée

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Soft pour libérer un dll utilisée

n°74051
El_gringo
Posté le 21-11-2001 à 12:10:51  profilanswer
 

En fait, g un pb avec une dll que j'écrit. Pour la tester, après une compilation, je dois lancer un éxécutable qui l'utilise. Mais il la libère pas quand je le quitte (je rentrerai pas dans les détails, ms ce fait est inévitable: g pas la main sur cet exe). Ce qui fait qu'après avoir testé une fois ma dll (et lancer cet exe qui l'utilise et ne la libère pas), je n'peux plus compiler (normal, la dll que je veux créer est utilisée) et je suis obligé de redémarer mon poste.
Je cherche donc un utilitaire qui me permettrai de trouver quel process utilise cette dll, et de la tuer. Bref, un truc qui permette de libérer la dll.
qqn à une idée !?

mood
Publicité
Posté le 21-11-2001 à 12:10:51  profilanswer
 

n°74053
BENB
100% Lux.
Posté le 21-11-2001 à 12:13:45  profilanswer
 

renome la...
c'est pas genial, mais comme ca tu pourras compiler...

n°74055
El_gringo
Posté le 21-11-2001 à 12:17:20  profilanswer
 

J'pourrais compiler, mais pas tester...
ou si tu veux dire que je devrais renomer la dll que je veux libérer, évidement, c pas possible...elle est utilisée, et on renomme pas un fichier utilisé ! :cry:

n°74057
BENB
100% Lux.
Posté le 21-11-2001 à 12:19:38  profilanswer
 

El_Gringo a écrit a écrit :

J'pourrais compiler, mais pas tester...
ou si tu veux dire que je devrais renomer la dll que je veux libérer, évidement, c pas possible...elle est utilisée, et on renomme pas un fichier utilisé ! :cry:  




Ben si, je vois pas le Pb...
essaye...

n°74059
youdontcar​e
Posté le 21-11-2001 à 12:22:34  profilanswer
 

tu peux essayer avec prcview : http://www.google.com/search?sourc [...] &q=prcview
 
c'est un freeware qui liste les process, les dlls utilisées, etc ... il permet de killer les process, par contre pour tes problèmes de dll je ne sais pas si ça va marcher.
 
enfin essaye voir, c'est toujours sympa comme utilitaire (dans le genre, y'a aussi filemon et regmon pour mater les accès disque/registry).

n°74061
El_gringo
Posté le 21-11-2001 à 12:24:48  profilanswer
 

Ben non... moi j'le vois le problème, même sous mes yeux:
"impossible de renomer LdsWeb, le fichier spécifié est utilisé par windows"...
hé oui... mais c plutot logique qd même !

n°74063
BENB
100% Lux.
Posté le 21-11-2001 à 12:28:03  profilanswer
 

El_Gringo a écrit a écrit :

Ben non... moi j'le vois le problème, même sous mes yeux:
"impossible de renomer LdsWeb, le fichier spécifié est utilisé par windows"...
hé oui... mais c plutot logique qd même !  




C'est pas ma faute, je le fait presque tous les jours...
mv toto.sl totoXX.sl :D et ca marche alors que un rm marche pas
desolee...
 
Et je parles meme pas de Solaris ou quand tu compiles un prog pendant qu'il tourne, la version qui tourne est celle que tu viens de compiler...

n°74064
El_gringo
Posté le 21-11-2001 à 12:29:23  profilanswer
 

youdontcare a écrit a écrit :

tu peux essayer avec prcview : http://www.google.com/search?sourc [...] &q=prcview
 
c'est un freeware qui liste les process, les dlls utilisées, etc ... il permet de killer les process, par contre pour tes problèmes de dll je ne sais pas si ça va marcher.
 
enfin essaye voir, c'est toujours sympa comme utilitaire (dans le genre, y'a aussi filemon et regmon pour mater les accès disque/registry).  




 
je sais pas si ça va m'aider; d'abbord: Manger !:D
Mais en tt cas, c ce que je cherchais, merci...

n°74066
seblamb
Posté le 21-11-2001 à 12:35:16  profilanswer
 

El_Gringo a écrit a écrit :

En fait, g un pb avec une dll que j'écrit. Pour la tester, après une compilation, je dois lancer un éxécutable qui l'utilise. Mais il la libère pas quand je le quitte (je rentrerai pas dans les détails, ms ce fait est inévitable: g pas la main sur cet exe).  




C'est windows qui gere le chargement et le déchargement des dll.
Même si le programme utilise LoadLibrary pour charger la dll, Windows la déchargera des que le programme se termine et ceci de manière transparente.
Je pense qu'il y a un autre problème: programme qui ne se termine pas, dll utilisée par un autre programme...

n°74087
El_gringo
Posté le 21-11-2001 à 14:14:46  profilanswer
 

seblamb a écrit a écrit :

 
C'est windows qui gere le chargement et le déchargement des dll.
Même si le programme utilise LoadLibrary pour charger la dll, Windows la déchargera des que le programme se termine et ceci de manière transparente.
Je pense qu'il y a un autre problème: programme qui ne se termine pas, dll utilisée par un autre programme...  




 
ha... ça sert à quoi que je précise que je vais pas m'étaler sur le sujet !? Le fait est que je veux pouvoir décharger cette Dll.

mood
Publicité
Posté le 21-11-2001 à 14:14:46  profilanswer
 

n°74090
chrisbk
-
Posté le 21-11-2001 à 14:16:57  profilanswer
 

si tu trouve ca m'interesse aussi, si je pouvais parfois m'eviter de quiter / relancer 3ds4 ce serait pas un mal....

n°74091
BENB
100% Lux.
Posté le 21-11-2001 à 14:18:41  profilanswer
 

Dans la serie contre-methodes....
et si tu changeais le repertoire ou tu builds la Dll ?
je sais que tu ne peu pas forcement, et que tu ne pourra peut-etre pas executer derriere, mais c'est une idee...

n°74101
El_gringo
Posté le 21-11-2001 à 14:25:32  profilanswer
 

Bah, c sur, si je fais ça, du coup, je pourrais compiler... Mais ça fait que déplacer le problème, parce qu'au moment du test, la dll qui sera utilisée elle celle qui n'est pas libérée par windows, bref, celle que je peux pas modifier. non, de toute façon, y a rien d'autre à faire que de trouver ce soft qui décharge les dll's de la mémoire... ou de redémarer le pc à chaque test ! pffff.... :(

n°74113
seblamb
Posté le 21-11-2001 à 14:46:36  profilanswer
 

Je crois pas que ce soit possible de décharger une dll de la mémoire car elle fait partie de la même zone mémoire que le programme lui-même.
 
C'est pour cela que je pense qu'en fait ton programme n'est pas déchargé de la memmoire. Donc il suffit de tuer vraiemment ce programme ou les process qu'il a engendré.

n°74125
El_gringo
Posté le 21-11-2001 à 15:34:00  profilanswer
 

ouais, je sais qu'en le tuant ça libère ma dll, ms si y avais moyen de le forcer, avec un programme externe, à décharger la dll, j'aurai préféré (parce que je sais qu'il n'utilise aucune de ses fonction,  donc le programme devrai tenir le coup, même si je le force à décharger cette dll)

n°74311
gilou
Modérateur
Modzilla
Posté le 22-11-2001 à 02:44:30  profilanswer
 

Ca peut se faire, j'ai lu il y a longtemps de la doc a ce sujet, mais ca se fait en programmant a assez bas niveau dans windows.
Si je retrouve les articles en question (MSJ? WDJ? DRDobbs?) je te dirai ou.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°74323
El_gringo
Posté le 22-11-2001 à 08:53:09  profilanswer
 

ha, ouais, je veux bien... ms juste par curiosité ! Parce qu'a la base, g besoin d'un soft qui fait ça pour éviter de me compliquer la vie. Si je dois moi même programmer ce soft, je crois que je vais me la compliquer plus qu'autre chose !:D
Mais ça m'interresse qd même...

n°74343
Carbon_14
Posté le 22-11-2001 à 09:56:14  profilanswer
 

Si c'est en 16 bits, il y a(vait) un vieux shareware TaskKiller qui permet de tuer les tâches qui tournent en rond, les DLLs bloquées. Je peux le retrouver aisément.
 :)  
En 32 bits, je suis démuni. :(

n°74419
Bloodymary​_
Posté le 22-11-2001 à 14:23:26  profilanswer
 

:bounce:  
 
si kelkun a une soluce ...

n°74530
gilou
Modérateur
Modzilla
Posté le 22-11-2001 à 18:50:01  profilanswer
 

Si tu codes le programme appelant la dll, tu pourrais essayer le code suivant:

Code :
  1. HMODULE hdll;
  2. hdll = LoadLibrary("le pathname du fichier de ta dll" );
  3. ..........
  4. ..........
  5. if (hdll)
  6.     {
  7.       int i;
  8.       /* je met 10 au pif, a toi d' ajuster selon ton cas */
  9.       for (i=0; i<10; i++)
  10.            FreeLibrary(hdll);
  11.     }


Note que a priori si tu as loade la dll depuis ton programme, tu as pas besoin de l' appel a LoadLibrary, puisque tu as deja loade la dll.
Ce code marche uniquement si tu l' integre au programme qui loade ta librairie (les dll ne sont plus partagees par les programmes depuis win32).
 
Tu peux te coder deux boutons dans un menu, un pour unloader la dll, et un pour la reloader [avec le LoadLibrary] (et tu copies ta nouvelle dll a la place de l' ancienne entre deux).
A+,

 

[edtdd]--Message édité par gilou--[/edtdd]


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  Soft pour libérer un dll utilisée

 

Sujets relatifs
[Java] Bon soft pour calculer des metriques ?[DELPHI] petit soft pour gérer vos vidéos
[C] Libérer la mémoire avec deletepetit soft pour gérér vos vidéos
Existe t'il un soft pour concevoir un prog sans connaître la prog?Soft windows qui renvoie le type de processeur
Cherche programmeur pouvant me faire un petit soft (10 min de dev)soft off
[Publier un soft] sur Download.comCherche programmeur pour creer un Soft d'enregistrement de MiniDisc
Plus de sujets relatifs à : Soft pour libérer un dll utilisée


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR