j'ai un léger problème avec ma librairie c++

voici ma classe

// fichier h
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Log
{
public:
  void Print (const std::wstring& text);
 
  static void Open (const std::string& filename);
 
  static Log& Instance ();
 
private:
  Log () {}
 
  std::wofstream out;
};
// fichier cpp
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
void Log::Open (const std::string& filename)
{
   Instance ().out.open (filename.c_str ());
}
 
Log& Log::Instance ()
{
  static Log log;
  return log;
}
 
void Log::Print (const std::wstring& txt)
{
  out << txt;
}

voici les option que j'utilise pour la créer:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
gcc -c Log.cpp
ar rcs liblog.a Log.o
voici un extrait du programme qui l'utilise:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
int main (....
{
  Log::Open ("Essai.txt")
  Log& log = Log::Instance ();
 
  log.Print (L"Dans main");
.
.
.

et les options pour le compiler:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
gcc -c Log.cpp
ar rcs liblog.a Log.o
gcc -o test Main.cpp -LdirectoryMyLibray -lstdc++ -llog
quand j'exécute le programme, le fichier essai.txt est créé, mais il n'y a rien d'écris dedans

j'ai ensuite rajouté une autre classe en dessous de l'autre:

// fichier h
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
class Log2
{
public:
  void Print (const std::wstring& text);
  void Open (const std::string& filename);
 
private:
  std::wofstream out;
};
// fichier cpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
void Log2::Open (const std::string& filename)
{
  out.open (filename.c_str ());
}
 
void Log2::Print (const std::wstring& txt)
{
  out << txt;
}
le fichier main:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
.
.
.
  Log2 l;
  l.Open ("Essai2.txt");
  l.Print (L"Dans main");
J'ai recompilé avec les mêmes option

La classe Log2 ouvre le fichier et cette fois imprime bien le texte "Dans Main"

mais Log qui est une classe Singleton ne fonctionne pas, il n'y a rien d'écrit dans son fichier (qui a bien été créé, mais qui reste vide).

Y a t'il d'autres option à définir pour le compilateur pour la faire fonctionner correctement ?

sur Visual C++ cela fonctionne correctement