IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Classe exportée héritant de std::vector


Sujet :

C++

  1. #1
    Membre averti Avatar de Flo.
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2002
    Messages : 379
    Points : 404
    Points
    404
    Par défaut 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 : 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.

  2. #2
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Points : 15 620
    Points
    15 620
    Par défaut
    Bonsoir
    Aucune idée sur le fond de ta question (problème de linkage avec msvc), par contre, normalement, il ne faut pas hériter de std::vector, son destructeur n'est pas vituel

Discussions similaires

  1. Utilisation de la class std::vector est très lourde!
    Par mathro dans le forum SL & STL
    Réponses: 35
    Dernier message: 01/05/2013, 23h15
  2. Pb std::vector dans une classe
    Par didi_di dans le forum Langage
    Réponses: 8
    Dernier message: 17/11/2009, 10h07
  3. Réponses: 10
    Dernier message: 30/06/2008, 19h59
  4. Réponses: 8
    Dernier message: 26/08/2004, 18h59
  5. Sauvegarde std::vector dans un .ini
    Par mick74 dans le forum MFC
    Réponses: 2
    Dernier message: 12/05/2004, 13h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo