Bonjour a tous,
Je me suis décidé a m'insrire sur ce forum car j'ai un gros problème existanciel lié au dlls.
En effet depuis ma première implementation de dll l'existance des static dans mon code a été remis en cause.
Je sais d'un amis que la dll a sa propre mémoire et que donc quand un static est declaré dans une classe il en existe deux instances. Une dans la library static (ou .exe) et une dans la zone mémoire de la dll. Ma première implementation ayant confirmé le problème, je me suis dit que la solution était d'initialiser deux fois le static dans le cas des singletons.
Sa marche dans le cas des singletons, car le static ne change pas au cour de l'execution du programme.
Mais quid des statics a valeur variable comme par exemple :
Comment faut il faire ? Y a t'il une option de compilation pour que les statics soit globaux ? Ou alors la solution est elle de ne pas utiliser les static dans les dlls ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 #ifdef STATIC # define DYN_LIBRARY #else # ifdef DLL_EXPORT # define DYN_LIBRARY __declspec(dllexport) # else # define DYN_LIBRARY __declspec(dllimport) # endif #endif class DYN_LIBRARY Object { static Int32 _NbObjects; // Number of objects in the scene Object(); }; Object:: Object() { ++_NbObjects; }
Merci à vous,
--
Al'
Partager