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

Visual C++ Discussion :

[VC++] DLL et STL


Sujet :

Visual C++

  1. #1
    Membre averti
    Profil pro
    Developpeur PHP Magento e-commerce
    Inscrit en
    Juin 2005
    Messages
    53
    D�tails du profil
    Informations personnelles :
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activit� : Developpeur PHP Magento e-commerce
    Secteur : High Tech - Produits et services t�l�com et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 53
    Par d�faut [VC++] DLL et STL
    Bonjour,

    je suis en train de cr�er un logiciel capable de charger des modules externes contenus dans des DLL via un gestionnaire lui-m�me contenu dans une DLL. pour faire tout ca, j'utilise la fonction LoadLibraryA de l'API win32 qui me renvoie un HMODULE.

    seulement, comme je n'aime pas perdre de vue une ressource durant l'ex�cution, je veux conserver ces HMODULE dans un map de la STL, mais le compilo n'est pas d'accord avec moi:

    d:\nano engine\kernel\kernel.h(70) : warning C4251: 'kernel::modules' : class 'std::map<_Kty,_Ty>' n�cessite une interface DLL pour �tre utilis�(e) par les clients de class 'kernel'
    with
    [
    _Kty=module_interface *,
    _Ty=HMODULE
    ]
    voici ma classe :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    class NANO_API kernel :
        public singleton<kernel>
    {
    friend class singleton<kernel>;
     
    protected:
        kernel();
        kernel(kernel &);
        kernel &operator= (kernel &);
        ~kernel();
     
    public:
        module_interface * load(file &f);
        void unload(module_interface * m);
     
        void dump();
     
    private:
        std::map<module_interface *, HMODULE> modules;
    };
    les module_interface * sont des pointeurs vers une classe abstraite, � chaque chargement de DLL, j'appelle une fonction contenue dans la DLL qui me renvoie un pointeur vers sa "version" de cette classe :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    typedef module_interface * (*module_load_type)();
     
    module_interface * kernel::load(file &f)
    {
        HMODULE lib = LoadLibraryA(f.path().c_str());
        if(!lib)
            throw exception::load_error("Unable to load module library. The file may not exist.");
     
        module_load_type function = reinterpret_cast<module_load_type>(GetProcAddress(lib, "load_module"));
        if(!function)
            throw exception::load_error("Unable to load module."
                "Function \"load_module\" not found.");
     
        module_interface * module = function();
        modules[module] = lib;
     
        return module;
    }

  2. #2
    R�dacteur
    Avatar de Laurent Gomila
    Profil pro
    D�veloppeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par d�faut
    Voir ici :
    http://www.developpez.net/forums/sho...5&postcount=22
    Et la r�ponse qui est juste au-dessous.

  3. #3
    Membre averti
    Profil pro
    Developpeur PHP Magento e-commerce
    Inscrit en
    Juin 2005
    Messages
    53
    D�tails du profil
    Informations personnelles :
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activit� : Developpeur PHP Magento e-commerce
    Secteur : High Tech - Produits et services t�l�com et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 53
    Par d�faut
    c'est plus simple que ce que je pensais , merci

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. [DLL] et classes de la STL ?
    Par NiamorH dans le forum C++
    R�ponses: 3
    Dernier message: 17/02/2009, 12h22
  2. R�ponses: 7
    Dernier message: 25/11/2005, 17h11
  3. conteneur de la STL (probl�me avec DLL et COM)
    Par moldavi dans le forum MFC
    R�ponses: 8
    Dernier message: 25/07/2005, 22h43
  4. Equivalent � ExeName pour une DLL
    Par Smortex dans le forum Langage
    R�ponses: 7
    Dernier message: 16/07/2002, 21h07
  5. R�ponses: 2
    Dernier message: 20/03/2002, 23h01

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