Bonjour,
Je suis sous visual studio 2005 et j'ai un petit probl�me avec l'Initialisation d'un membre statique d'une classe dans une librairie statique.
Comme un ptit bout de code sera plus parlant (version condens�e de mon code):
Le probl�me est que (A) est appel�e avant que logger (B) soit initialis�.
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
21
22
23
24
25
26
27
28
29
30
31
32 // definitions used when using static library #if defined(DAO_STATIC) #define DAO_DLL_DECL // definitions used when building DLL #elif defined(DAO_DLL) #define DAO_DLL_DECL __declspec(dllexport) // definitions used when using DLL #else #define DAO_DLL_DECL __declspec(dllimport) #endif class DAO_DLL_DECL OracleRepository { public: OracleRepository(); protected: otl_connect * db; private: static log4cxx::LoggerPtr logger; }; OracleRepository::OracleRepository() { LOG4CXX_DEBUG(OracleRepository::logger, _T("+OracleRepository")); (A) // Bouml preserved body begin 00024983 db = NULL; // Bouml preserved body end 00024983 LOG4CXX_DEBUG(OracleRepository::logger, _T("-OracleRepository")); } log4cxx::LoggerPtr OracleRepository::logger = log4cxx::Logger::getLogger("dao::OracleRepository"); (B)
D'o� �chec critique de l'application.
Ce probl�me ne survient que quand je compile ma librairie en statique. En dynamique tout va bien, (B) est appel� avant (A).
Pour info:
- ce lien semble r�pondre � mon probl�me mais la solution propos�e ne me convient pas.
- J'utilise aussi log4cxx en statique
- Windows Xp
EDIT:
Apr�s qques recherches il semblerait que VC++ ne fasse pas le link sur la variable statique car je ne l'utilise pas explicitement dans le programme qui utilise la librairie.
Merci pour votre aide.
Partager