Classe exportée héritant de std::vector
Bonjour,
je suis sous XP sp3 et msvc 2008.
Je définis une classe Liste qui hérite de std::vector<int>
Code:
1 2 3 4 5 6 7 8 9
| #if _BUILDING_
#define _DECORATION_ __declspec(dllexport)
#else
#define _DECORATION_ __declspec(dllimport)
#endif
class _DECORATION_ Liste : public std::vector<double>
{
}; |
que j'importe dans un exe. J'accède sans problème aux membres déclarés dans Liste.
En revanche, toujours dans l'exe, et en release uniquement, lorsque j'accède à une méthode d'une instance de ma classe Liste héritée de std::vector<double>, j'ai une erreur de link (lnk 2001 : unresolved external symbol "symbol").
De même si j'essaie de déclarer, dans l'exe, un bête std::vector<double>. Comme si le linker cherchait la définition de la méthode size() (par exemple) dans Liste plutôt que dans std::vector<double>.
J'ai pas mal regardé sur le net. J'ai donc essayé plusieurs choses (notamment dans la msdn) :
- linker la dll et l'exe avec msvcrt.lib
- faire une instanciation explicite et décorée (_DECORATION_) de std::vector<double> dans la dll avant la déclaration de Liste
Mais rien n'y fait.
Un petit coup de main serait le bienvenu :)
Flo.