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

  FORUM HardWare.fr
  Programmation

  [VC++] Besoin d'un expert en DLL/mémoire partagé/allocation mémoire

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[VC++] Besoin d'un expert en DLL/mémoire partagé/allocation mémoire

n°115456
leander
Posté le 21-03-2002 à 10:41:51  profilanswer
 

J'ai un problème assez bizarre et que je n'arrive pas à expliquer.
Attention c'est un peu compliqué.
 
Donc, j'ai un programme qui charge 2 Dlls. Une Dll 1 qui contient un gestionnaire de mémoire et par lequel passe tout les new (allocation mémoire) que je fais dans mon Exe et mes Dlls.
Et l'autre Dll 2 contient que truc dont une classe de Temps CTime qui utilise le QueryPerformanceFrequency() de windows.
 
Donc, mon problème est le suivant :
depuis mon Exe j'appelle un fonction de ma Dll 2 qui va faire un  
"CTime*   pTime:
 
pTime = new CTime;
pTime->Init()".
 
Le new est bien sur pris en charge par le la Dll 1.
Dans la fonction Init(), j'ai le code suivant :
"if (QueryPerformanceFrequency((LARGE_INTEGER*)&m_i64Frequency))
{
  return true;
}
return false;"
 
ou m_i64Frequency est une variable membre de ma classe CTime.
Donc le problème est à ce niveau là. En effet la fonction QueryPerformanceCounter me renvoie false !!
 
J'ai donc fais des tests, et si je met le code :
"
__int64   i64Frequency;
 
if (QueryPerformanceFrequency((LARGE_INTEGER*)&i64Frequency))
{
  m_i64Frequency = i64Frequency;
  return true;
}
return false;"
 
ça marche !!! L'appel à la fonction QueryPerformanceFrequency marche.
J'ai donc aussi essayer un autre test. Si pour la création de ma Classe CTime je fais :
"CTime        rTime;
 
rTime.Init();"
 
ou  
 
"CTime*       pTime;
 
pTime = (CTime*) malloc( sizeof(CTime) );
pTime->Init();"
 
ça marche niquel !!!!
Conclusion, apparemment la fonction QueryPerformanceFrequency() n'accepte pas les variables qui sont allouées dans une autre Dll, mais elle accepte les variables qui se trouve dans le Heap.
 
 
Pourtant mon Exe et mes Dlls sont tous compilés avec les options MultiThread Dll et Alignement sur 4 bytes.
 
Donc, es-ce que quelqu'un à une petite idée ?

mood
Publicité
Posté le 21-03-2002 à 10:41:51  profilanswer
 

n°115490
BENB
100% Lux.
Posté le 21-03-2002 à 11:30:45  profilanswer
 

ET ca ne viendrais pas de la valeur de i64Frequency ?
 
car dans le premier il est initialise par le constructeur et dans les autres il ne l'est pas

 

[jfdsdjhfuetppo]--Message édité par BENB--[/jfdsdjhfuetppo]

n°115564
leander
Posté le 21-03-2002 à 13:17:39  profilanswer
 

j'ai penser aussi à ça, j'ai donc essayé de l'initialiser, mais ce n'est pas ça.
 
Je vais faire un test en faisant un new de mon i64Frequency avant d'appeler la fonction pour vérifier que ça plante que quand la variable se trouve dans une autre zone mémoire.

n°115572
leander
Posté le 21-03-2002 à 13:30:57  profilanswer
 

bon finalement si je fais
"__int64*   pi64Frequency= new __int64;  
 
if (QueryPerformanceFrequency((LARGE_INTEGER*)pi64Frequency))  
{  
 m_i64Frequency = i64Frequency;  
 return true;  
}  
return false;"
 
ça marche contrairement à ce que je pouvais penser. Donc c'est vraiment bizarre ce bug.


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

  [VC++] Besoin d'un expert en DLL/mémoire partagé/allocation mémoire

 

Sujets relatifs
probleme sous oracle besoin personne trés qualifieUrgent Besoin d'aide pour finaliser un programme ORACLE/JAVA sur lyon
[javascript] encore besoin d'aide sur les formulaires[Newbie]Besoin d'aide pour du batch scripting....
J'ai énormément besoin de votre aide si vous vous y connaisser en aspbesoin tutorial open GL
HELP, besoin de connaisseurs ACCESS, vba...[C++/MFC] IWebBrowser2 : comment afficher un fichier html en mémoire ?
[VC++ et DLL] problème avec la desactivation des points d'arret[C++] Dll, exportation d'une classe, c possible, non !?
Plus de sujets relatifs à : [VC++] Besoin d'un expert en DLL/mémoire partagé/allocation mémoire


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