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

 


Dernière réponse
Sujet : [VC++] Dll et STL: probleme de recopie (???)
__Lolo__

SoWhatIn22 a écrit a écrit :

 
merci quand même à ceux qui se sont posés la question.  




de rien  :D  
 
et merci pr la reponse au passage  :jap:


Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
__Lolo__

SoWhatIn22 a écrit a écrit :

 
merci quand même à ceux qui se sont posés la question.  




de rien  :D  
 
et merci pr la reponse au passage  :jap:

SoWhatIn22 si par hasard yen a qui lisent ce post un jour, voila la solution à mon soucis:
 
il se trouve que l'implementation de la STL par Microsoft est buggée. Mon soucis ne vient pas vraiment d'un bug, mais quasiment. Il se trouve que certaines classes templates possèdent des variables de classes (static). Et quand un exe appelle une dll, l'exe instancie les varioables de classe dans sa zone mémoire, et la dll fait de même. Mais ce ne sont pas les même des 2 côtés. Aujourd'hui, on ne peut passer que les vecteurs entre une dll et un exe.
 
pour plus d'infos:
http://www.dinkumware.com/
 
merci quand même à ceux qui se sont posés la question.
SoWhatIn22 hello,
 
voici mon soucis:
 
Dans une fonction, j'intancie une map de la STL (de microsoft). Ensuite, je charge explicitement une dll (LoadLibrary) et je recupere l'adresse d'une fonction de cette dll. Cette fonction prend en argument un pointeur sur un objet map.
 
Une fois le pointeur sur la fonction récupéré, j'appelle cette fonction et je lui passe un pointeur sur l'objet map instancié précédemment.
Le pointeur n'a pas changé, mais je ne retrouve pas completement l'objet pointé: une partie de ses attributs ont changés... Je suis donc incapable de faire une manipulation sur cete objet, pas même une recopie.
 
ex:
void fonc(void)
{
 map<int,int> mymap;
 HINSTANCE hinst = LoadLibrary("mydll" );
 
 typedef void (* TYPE) (map<int,int> *);
 TYPE my fonc = (TYPE) GetProcAddress(hinst, "dllfunc" );
 
 dllfunc(&mymap);
}
 
quand je rentre dans la fonction dllfunc, alors l'adresse de mymap est bien toujours la même, mais je ne peux rien faire sur l'objet pointé, pas même le recopier.
J'ai essayer de passer une référence au lieu d'un pointeur, mais c'est la même chose.
 
Si qq1 a compris ce que je veux dire et a en plus une idée, alors j'attends sa réponse avec une TRES grand impatience, parce que je ne vois pas d'ou vient le soucis...
 
merci d'avance.

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)