DLL et instances...

DLL et instances... - C++ - Programmation

Marsh Posté le 16-01-2004 à 14:31:52    

Bonjour,
 
j'ai un probleme et je ne trouve pas de solution :(
 
quand on realise un LoadLibreary() on charge une premiere fois une DLL. Cependant j'aurai voulu charger deux fois la meme DLL, sans que les variable soient communes à mes deux instances. Je n'y arrive pas... que faire ?? (chnif)
 
help me :(

Reply

Marsh Posté le 16-01-2004 à 14:31:52   

Reply

Marsh Posté le 16-01-2004 à 16:21:38    

[:google] bordel!
A+,


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

Marsh Posté le 16-01-2004 à 16:32:31    

formidable

Reply

Marsh Posté le 16-01-2004 à 16:32:35    

au LoadLibrary, si tu rappelles ta dll pour le meme processus, il va te renvoyer le meme HMODULE et ne pas le recharger, il va augmenter un compteur interne.
 
tu peux par contre instancier plusieurs fois les objets de ta dll ?


---------------
-( BlackGoddess )-
Reply

Marsh Posté le 16-01-2004 à 16:41:30    

Ben j'ai trouve plein d'articles expliquant comment faire en 5s avec google. Aide toi et le forum t'aidera, mais si tu ne fais pas d'efforts, ne comptes pas sur nous.
A+,


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

Marsh Posté le 16-01-2004 à 16:42:57    

merci pour ta reponse BlackGoddess !
 
par contre je ne comprends pas ce que tu veux dire par instancier plusieurs fois les objets de ma dll ... tu veux dire que c'est la DLL qui s'occuperait de creer de nouveaux objets ? si tel est le cas comment pourrait elle identifier/differencier les differents appels ?

Reply

Marsh Posté le 16-01-2004 à 16:44:11    

pour gilou : Un article parlant du probleme de la double-instantiation ?

Reply

Marsh Posté le 16-01-2004 à 17:03:37    

Tu fais "dll shared variable" sous google.
Et hop, tu obtiens:
http://www.codeproject.com/dll/dat [...] print=true
http://msdn.microsoft.com/library/ [...] lls.3f.asp
http://www.lesher.ws/rebase.html
etc etc
A+,


Message édité par gilou le 16-01-2004 à 17:06:26

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

Marsh Posté le 16-01-2004 à 17:26:45    

gilou : formidable encore. Je voulais exactement le contraire : La meme application qui créé 2 instances d'un DLL et qui obtient une zone memoire pour chacune d'entre elle.... Mais merci quand meme ;)

Reply

Marsh Posté le 16-01-2004 à 19:29:05    

bin ... tu ne dois pas passer par le LoadLibrary pour differencier des instances d'une dll, mais par contre utiliser des objets que tu instancies plusieurs fois a l'interieur de ta dll
 
par exemple :
 

Code :
  1. struct foo
  2. {
  3.    int val; // variable qui differenciera suivant chaque instance
  4. };
  5. // fonction a exporter de la dll
  6. // utiliser de multiples fois a la place de loadlibrary
  7. foo* create_object()
  8. {
  9.   return new foo;
  10. }
  11. // fonction a exporter de la dll
  12. // utiliser de multiples fois a la place de freelibrary
  13. void delete_object(foo * mon_objet)
  14. {
  15.   delete mon_objet;
  16. }


 
essaie de faire le parallèle entre une dll contenant des fonctions, et un objet contenant des méthodes pour remplacer ta dll par une classe.
 
puis apres tu peux encapsuler des appels à la dll dans une classe pour mieux gérer la destruction de tes objets construits / le freelibrary s'il y a une exception


---------------
-( BlackGoddess )-
Reply

Marsh Posté le 16-01-2004 à 19:29:05   

Reply

Marsh Posté le 16-01-2004 à 19:34:28    

Creer deux instances d'une DLL, ca veut dire quoi??
Loader plus d'une fois la librairie en memoire?? ca marchera pas IMHO tout au plus auras tu un refcount incrementé.
Je vois pas du tout l'interet de passer par une dll pour faire ce que tu veux. Tu pourrais peut etre expliquer un peu mieux ton probleme afin qu'on lui apporte une solution adaptee.
Si deja tu avais pose de maniere claire ton pb au debut du topic, ca m'aurais evite de te filer des liens inutiles.
A+,


Message édité par gilou le 16-01-2004 à 19:35:46

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

Marsh Posté le 16-01-2004 à 20:15:51    

gilou a écrit :


Si deja tu avais pose de maniere claire ton pb au debut du topic, ca m'aurais evite de te filer des liens inutiles.


 
moi j'avais tout a fait compris ce qu'il voulait :o

Reply

Marsh Posté le 16-01-2004 à 20:49:30    

Oui, en relisant, un sans m'avais echappé.
Mais bon si on savait ce qu'il veut exactement faire, on comprendrait pourquoi il pose une question aussi zarbi a priori.
A+,


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

Sujets relatifs:

Leave a Replay

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