Problème avec une variable statique

Signaler
Messages postés
4
Date d'inscription
mercredi 11 juin 2008
Statut
Membre
Dernière intervention
24 juin 2008
-
Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
-
Bonjour à tous,

Je vous expose en quelque lignes mon problème:

J'ai une DLL (c++) appelée par un programme windev.

Dans cette DLL, j'ai un première fonction qui récpuère une trame.
D'autres fonctions viennent récupérer la partie de la trame qui leur intéresse.
Toutes mes fonctions sont externes pour pouvoir être appelées par WinDev, j'ai donc besoin d'une variable dans laquelle je place ma trame récupérée dans la première fonctions, et qui va être réutilisée par les autres fonctions.

A noter que mes fonctions s'exécutent dans un ordre bien précis (pas de risque donc qu'une fonction qui traite la trame soit appelée avant que la trame soit récupérée).

On m'a conseillé de placer ma variable "trame" comme statique, chose que je ne maitrise pas donc si quelqu'un pourrait m'aider (variable de type strin).

Merci à vous !

6 réponses

Messages postés
4
Date d'inscription
mercredi 11 juin 2008
Statut
Membre
Dernière intervention
24 juin 2008

Pour apporter un peu de précisions :

J'ai créé une variable statique dans le .h en public comme ceci:
 
" MaClass.h"

class CMaClass {

public:
    CMaClass();
   ~CMaClass();

    //Variables
    static int maVar;
  
};
int CMaClass::maVar = 0;

Dans ma première fonction, il y a tout un traitement puis je retourne "CMaClass::maVar" et c'est la bonne valeur qui m'est affichée.
Dans ma deuxième fonction, il y a juste un "return CMaClass::maVar" pour voir si il a gardé la valeur retournée dans la première fonction, et là il me retourne 0 (ou n'importe quelle valeur avec laquelle je l'aurais initialisé).

Quelqu'un aurait-il une solution pour garder la valeur d'une fonction à l'autre ?

Merci d'avance !!
Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
5
Oui une variable statique garde sa valeur n'importe ou dans le programme tant que tu n'as qu'un seul "contexte" mémoire ! Or avec une dll, c'est beaucoup plus complexe, car la dll a déja été linké, et la variable static "CMaClass::maVar" n'est pas la meme dans la dll et dans ton exécutable. Donc conclusion, n'utilises pas de variable static si elle est accessible de l'exécutable et de la dll.
Messages postés
4
Date d'inscription
mercredi 11 juin 2008
Statut
Membre
Dernière intervention
24 juin 2008

Tout d'abord merci de ta réponse.
Etant donné que ma dll n'est chargée qu'une fois par le programme hôte, ça ne rentre pas dans la condition de "un seul contexte mémoire" ?

J'ai bien compris que le fait que je sois "sous DLL" me restreint au niveau de mes variables, mais aurais tu une solution pour qu'une variable garde la valeur que je lui ai donnée entre deux fonctions exportées (la première récupère maVar, la deuxième doit traiter maVar) ?
Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
5
A priori, si tes deux fonctions dans la dll, il n'y aura pas de pb. Mais c'est la dll qui définir la valeur de ta variable. Mais a ta place, j'éviterais tout simplement les variables static dans ton cas.
Messages postés
4
Date d'inscription
mercredi 11 juin 2008
Statut
Membre
Dernière intervention
24 juin 2008

j'ai l'alternative des Files que j'ai déjà testé, je voulais évité d'utiliser cette méthode, mais j'ai pas l'air d'avoir bcp d'autres solutions :)
Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
5
Mais j'ai du mal a comprendre pourquoi tu utilises une dll.