multiple définition incompréhensible
Bonjour,
En compilant mon projet j'ai eu une erreur pour le moins surprenante :
Citation:
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
Sortie de compilation :
Citation:
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.
UnixWindows.h :
Code:
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 |
ios_base :
Code:
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; } |
Si je comprend bien il me dit que la fonction symboleDossier est défini la première fois dans ios_base.
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?