Bonjour,

je suis sous XP sp3 et msvc 2008.

Je définis une classe Liste qui hérite de std::vector<int>

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>
{
};
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.