Bonjour,
Voila encore un autre probleme que je rencontre sous VS 7.1.
D'un cote je cree une lib avec les fichiers suivants :
Code :
- // lllll.h
- #ifndef lllll_HEADER
- #define lllll_HEADER
- #include <iostream>
- using namespace std ;
- void test() ; // <- necessaire sinon l'executable n'est pas lie a la lib
- template <typename T>
- void
- toto( void ) {
- cout << "toto 1\\n" ;
- }
- #endif
|
Code :
- // lllll.cpp
- #include "lllll.h"
- template <>
- void
- toto<int>( void ) {
- cout << "toto int 1\\n" ;
- }
- void test(){
- cout << "test\\n" ;
- }
|
De l'autre, j'ai mon executable :
Code :
- // ttttt.cpp
- #include <lllll.h>
- int main()
- {
- test() ; // <- necessaire pour un link correct avec la lib
- toto<int>() ;
- toto<double>() ;
- return 0 ;
- }
|
La compilation de la librairie s'effectue normalement (sans erreur), par contre l'editeur de lien me retourne
lllll.lib(lllll.obj) : error LNK2005: "void __cdecl toto<int>(void)" (??$toto@H@@YAXXZ) déjà défini(e) dans ttttt.obj |
Ce meme code compile avec gcc 3.3 ne pose aucun probleme particulier...
Avez-vous une idee sur la question ?
Merci a vous.
Message édité par bb138 le 08-02-2005 à 14:46:46