j'ai un léger problème avec ma librairie c++
voici ma classe
// fichier h
// 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 class Log { public: void Print (const std::wstring& text); static void Open (const std::string& filename); static Log& Instance (); private: Log () {} std::wofstream out; };
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:
voici un extrait du programme qui l'utilise:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 gcc -c Log.cpp ar rcs liblog.a Log.o
.
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:
quand j'exécute le programme, le fichier essai.txt est créé, mais il n'y a rien d'écris dedans
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
j'ai ensuite rajouté une autre classe en dessous de l'autre:
// fichier h
// fichier cpp
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; };
le fichier main:
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; }
J'ai recompilé avec les mêmes option
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");
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
Partager