petit problème avec ma librairie c++
j'ai un léger problème avec ma librairie c++
voici ma classe
// fichier h
Code:
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:
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:
1 2
| gcc -c Log.cpp
ar rcs liblog.a Log.o |
voici un extrait du programme qui l'utilise:
Code:
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:
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:
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:
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:
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