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 :

utiliser une dll en C++


Sujet :

Visual C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Juin 2008
    Messages
    522
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Chercheur en informatique

    Informations forums :
    Inscription : Juin 2008
    Messages : 522
    Par défaut utiliser une dll en C++
    Bonjour

    J'amerai savoir comment inclut-on les dll dans un projet en C++.
    L'idée serait d'utiliser aussi des dll en plus-in donc inclure aussi des dll si seulement elles existent. Comment doit-on le spécifier dans le code.

    J'aurait la même question aussi mais dans un projet C++/CLR .

    raphchar

  2. #2
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Bonjour,
    Un chargement dynamique de DLL se fait par LoadLibrary/GetProcAdress.

  3. #3
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    Citation Envoyé par 3DArchi Voir le message
    Bonjour,
    Un chargement dynamique de DLL se fait par LoadLibrary/GetProcAdress.
    Sans oublier le FreeLibrary() quand on n'a plus besoin de la DLL
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  4. #4
    Membre émérite
    Avatar de Ange_blond
    Homme Profil pro
    Ingénieur développement en 3D temps réel
    Inscrit en
    Mars 2007
    Messages
    902
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement en 3D temps réel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2007
    Messages : 902
    Par défaut
    En utilisant les heritages, les variables statiques et le load dynamic, on peut se passer des getProcAdress.

    si la DLL implémente une classe qui herite d'une classe déclarée dans un core, et que :
    * dans la dll il y a un membre static
    * dans le core il y a la déclaration du membre static avec dans le constructeur une mise en mémoire (pushbask dans une liste ou similaire) de l'element qui vient d'etre construit ...

    alors au chargmeent de la DLL, automatiquement ta variable static sera implémentée, le constructeur appellé dans le core, et donc dans le core tu aura ton instance de classe de ta DLL.

    Testé et approuvé.
    Necessite par contre quelques aménagements : heritage, méthodes virtuelles, code dans la DLL et dans le core, DLL qui dépend donc du core pour compiler et enfin, dans le cs d'un singleton qui est un registre pour gerer les dll dynamiques, il faut que le core soit aussi une lib....

    Mais dans certains cas (dans le mien) c'est tres pratique.

  5. #5
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Citation Envoyé par Ange_blond Voir le message
    En utilisant les heritages, les variables statiques et le load dynamic, on peut se passer des getProcAdress.

    si la DLL implémente une classe qui herite d'une classe déclarée dans un core, et que :
    * dans la dll il y a un membre static
    * dans le core il y a la déclaration du membre static avec dans le constructeur une mise en mémoire (pushbask dans une liste ou similaire) de l'element qui vient d'etre construit ...

    alors au chargmeent de la DLL, automatiquement ta variable static sera implémentée, le constructeur appellé dans le core, et donc dans le core tu aura ton instance de classe de ta DLL.

    Testé et approuvé.
    Necessite par contre quelques aménagements : heritage, méthodes virtuelles, code dans la DLL et dans le core, DLL qui dépend donc du core pour compiler et enfin, dans le cs d'un singleton qui est un registre pour gerer les dll dynamiques, il faut que le core soit aussi une lib....

    Mais dans certains cas (dans le mien) c'est tres pratique.
    Modulo un bon plat de spaghetti

  6. #6
    Membre émérite
    Avatar de Ange_blond
    Homme Profil pro
    Ingénieur développement en 3D temps réel
    Inscrit en
    Mars 2007
    Messages
    902
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement en 3D temps réel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2007
    Messages : 902
    Par défaut
    Oui mais on gagne en utilisation :

    les getProdAdress premettent la communication uniquement avec des types du C ... (double déclaration de classe dans le cas où on veut balader une instance, pas de std::string, ...)
    là on communique direct avec l'instance sans autre restriction.

    Chacun choisis le plus adapté à ses bseoins, dans mon cas c'est tout vu

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [JNI] Difficultés pour utiliser une DLL
    Par etiennegaloup dans le forum Entrée/Sortie
    Réponses: 10
    Dernier message: 15/08/2005, 21h29
  2. [Windows]utiliser une dll c# en java
    Par dude666 dans le forum API standards et tierces
    Réponses: 3
    Dernier message: 01/07/2005, 02h19
  3. Réponses: 7
    Dernier message: 13/01/2005, 10h30
  4. [DLL] utiliser une DLL a partir d' une DLL et un .def
    Par venomelektro dans le forum MFC
    Réponses: 9
    Dernier message: 07/12/2004, 14h01

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