Bonjour,
En compilant mon projet j'ai eu une erreur pour le moins surprenante :
Sortie de compilation :UnixWindows.h:12: erreur : multiple definition of `LD::symboleDossier(std::string&)'
c:\qtsdk\mingw\bin\..\lib\gcc\mingw32\4.4.0\include\c++\bits\ios_base.h:129: erreur : first defined here
:-1: erreur : collect2: ld returned 1 exit status
UnixWindows.h :debug/arborescance.o: UnixWindows.h:12: multiple definition of `LD::symboleDossier(std::string&)'
debug/versionfile.o:c:/qtsdk/mingw/bin/../lib/gcc/mingw32/4.4.0/include/c++/bits/ios_base.h:129: first defined here
collect2: ld returned 1 exit status
mingw32-make.exe[1]: *** [debug\Gestionnaire_maj.exe] Error 1
mingw32-make.exe: *** [debug] Error 2
16:31:01: Le processus "C:\QtSDK\mingw\bin\mingw32-make.exe" s'est terminé avec le code 2.
ios_base :
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 #ifndef UNIXWINDOWS_H #define UNIXWINDOWS_H #include <string> namespace LD { /** @brief Ajoute au chemin passé en paramètre le symbole adéquat : '\' pour les Unix, '/' pour windows @param std::string & chemin : chemin auquel ajouté le symbole @return std::string & : chemin une fois le symbole ajouté */ std::string & symboleDossier(std::string & chemin) { return chemin += '/'; // '\' pour Unix } } #endif // UNIXWINDOWS_H
Si je comprend bien il me dit que la fonction symboleDossier est défini la première fois dans ios_base.
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 inline _Ios_Openmode operator&(_Ios_Openmode __a, _Ios_Openmode __b) { return _Ios_Openmode(static_cast<int>(__a) & static_cast<int>(__b)); } inline _Ios_Openmode operator|(_Ios_Openmode __a, _Ios_Openmode __b) { return _Ios_Openmode(static_cast<int>(__a) | static_cast<int>(__b)); } //c'est à cette ligne qu'il y a une erreur. inline _Ios_Openmode operator^(_Ios_Openmode __a, _Ios_Openmode __b) { return _Ios_Openmode(static_cast<int>(__a) ^ static_cast<int>(__b)); } inline _Ios_Openmode& operator|=(_Ios_Openmode& __a, _Ios_Openmode __b) { return __a = __a | __b; }
Par contre si je met la fonction symboleDossier en inline, je n'ai plus de problèmes.
Je suis un peu perplexe...
Auriez-vous une idée?
Partager