Bonjour,
je suis sous XP sp3 et msvc 2008.
Je définis une classe Liste qui hérite de std::vector<int>
que j'importe dans un exe. J'accède sans problème aux membres déclarés dans Liste.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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> { };
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.
Partager