Bonjour,
Les classes templates ne sont que des patrons de classe. L'instanciation réelle d'un template à lieu à la compilation du *fichier qui l'utilise*.
Ainsi dans un un fichier qui utilise des templates, le compilateur doit avoir accès au code source de ce template, et non pas seulement sa déclaration.
Donc cela n'a aucun sens de mettre une classe template en export d'une DLL.
La solution consiste à mettre en export d'une DLL des classes templates instanciés sur un type réel. Or comme on ne peut exporter un typedef, on doit passer par un simple héritage.
Par exemple :
1 2 3 4 5 6 7 8 9 10 11 12
|
template<typename T>
class TplClass {
...
};
__declspec(export) class TFloatClass : public TplClass<float> {
};
__declspec(export) class TIntClass : public TplClass<int> {
};
... |
Partager