Exportation de variable statique
Bonjour
J'ai créé dans une DLL une classe singleton, exportée via la directive __declspec(dllexport). J'utilise pour créer mes singletons une classe de base template comme ceci :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| template <class T>
class CSingleton
{
public :
static T& Instance();
// ...
private :
static T* Inst;
// ...
}; |
Code:
1 2 3 4 5 6 7 8 9
| class EXPORT MaClasse : public CSingleton<MaClasse>
{
friend class CSingleton<MaClasse>;
// ...
};
// Puis dans MaClasse.cpp :
template <> MaClasse* CSingleton<MaClasse>::Inst = NULL; |
Puis dans le programme utilisant la DLL, je manipule mon singleton normalement :
Code:
MaClasse::Instance().xxx();
Ce code compile parfaitement sous Visual C++ 7.1, mais Dev-C++ 4.9.9.1 (gcc 3.3.1) me donne lui une erreur d'édition de lien en compilant le client de la DLL : il ne trouve pas MaClasse::Inst (qui est pourtant défini dans un .cpp et exporté comme toute sa classe). La DLL compile elle parfaitement avec les deux compilos.
Est-ce que j'ai loupé quelque chose, fait une fausse manip (notamment avec le template singleton) ou bien est-ce un comportement maladroit de Dev-C++ ?
Merci