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 :

charger une dll avec un .lib


Sujet :

Visual C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    248
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2008
    Messages : 248
    Par défaut charger une dll avec un .lib
    Salut,

    C'est la première fois que j'essais de charger une dll.
    J'aimerai pouvoir utiliser les fonctions contenues dans la dll dont j'ai le fichier .lib associé. D'après mes lectures j'ai compris qu'il y a une façon dynamic pour charger une dll si on ne possède pas le .lib. Par contre, avec le .lib, il suffit de linker ce dernier dans visual studio et utiliser les fonctions.
    Je connais les noms des fonctions qui sont dans la dll mais je ne vois pas trop comment appeler ces fonctions dans ce cas ?


    Merci !

  2. #2
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2008
    Messages
    26 767
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2008
    Messages : 26 767
    Par défaut
    Salut,

    Citation Envoyé par Nehmé Voir le message
    C'est la première fois que j'essais de charger une dll.
    J'aimerai pouvoir utiliser les fonctions contenues dans la dll dont j'ai le fichier .lib associé. D'après mes lectures j'ai compris qu'il y a une façon dynamic pour charger une dll si on ne possède pas le .lib. Par contre, avec le .lib, il suffit de linker ce dernier dans visual studio et utiliser les fonctions.
    Je connais les noms des fonctions qui sont dans la dll mais je ne vois pas trop comment appeler ces fonctions dans ce cas ?
    Tu les appelles comme les autres fonctions de ton programme : tu inclus le ou les fichier(s) d'en-tête, puis tu peux utiliser les fonctions, les types, les classes... qui y sont définis. Une seule condition : que tu lies avec le .lib.
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    248
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2008
    Messages : 248
    Par défaut
    Salut,

    Merci pour ta réponse.
    Comment savoir le nom des fichiers d'entête qui sont dans la dll ?

  4. #4
    Rédacteur

    Inscrit en
    Novembre 2006
    Messages
    1 272
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 272
    Par défaut
    Normalement quand on fourni une DLL pour VC++ on fourni 3 choses:
    -La DLL
    -Le fichier .lib associé
    -Le fichier .H correspondant

    Si tu n'a pas le .h ça va etre plus ennuyeux...
    Vous voulez participer aux Tutoriels, FAQ ou Traductions et faire partie de l'équipe Qt de Developpez.
    N'hésitez pas à me contacter par MP.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    248
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2008
    Messages : 248
    Par défaut
    Citation Envoyé par superjaja Voir le message
    Une seule condition : que tu lies avec le .lib.
    Comment je lie le .lib ?

    Ce que je fais est aller dans les propriétés du projet:
    Linker/General/Additional Library Directories et j'ajoute le path du dossier qui contient mon .lib et ma dll

    J'ai effectivement le .h mais je n'arrive pas à l'inclure.

    Merci

  6. #6
    Rédacteur
    Avatar de Neitsa
    Homme Profil pro
    Chercheur sécurité informatique
    Inscrit en
    Octobre 2003
    Messages
    1 041
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chercheur sécurité informatique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 041
    Par défaut
    Citation Envoyé par Nehmé Voir le message
    Comment je lie le .lib ?

    Ce que je fais est aller dans les propriétés du projet:
    Linker/General/Additional Library Directories et j'ajoute le path du dossier qui contient mon .lib et ma dll
    Il faut ensuite spécifier la bibliothèque:

    Menu: Project > xxx Properties
    puis

    Configuration Properties > linker > input > Additional Dependencies
    Il suffit d'entrer le nom de la lib (pas son chemin complet juste le fichier).

    J'ai effectivement le .h mais je n'arrive pas à l'inclure.
    Le plus simple est de spécifier un répertoire d'include additionnel :

    Toujours dans la page des propriétés:

    Configuration Properties > C/C++ > General > Additional Include directories
    Ensuite, dans le code:


  7. #7
    Membre extrêmement actif
    Avatar de randriano
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 221
    Par défaut
    Citation Envoyé par superjaja Voir le message
    Normalement quand on fourni une DLL pour VC++ on fourni 3 choses:
    -La DLL
    -Le fichier .lib associé
    -Le fichier .H correspondant

    Si tu n'a pas le .h ça va etre plus ennuyeux...
    Ben, tout a été dit je pense
    Le problème error LNK2019 est généralement dû à une mauvaise liaison lorsque tu as lié le .lib

    En effet, est-ce que tu as le .H? Car le LIB et le H doivent aller de pair

    Et il suffit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #include <gdiplus.h>				// Base include
    #pragma comment(lib, "gdiplus.lib")
    Pas besoin d'inscrire le DLL quelque part dans VC++! Mais faut toujours l'avoir bien sûr dans le bon répertoire
    randriano.dvp.com
    Développeur. Product Owner [Agile]. Sites web, mobile apps, système d'information (SI).

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    248
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2008
    Messages : 248
    Par défaut
    Merci pour vos réponses !

    Ca fonctionne maintenant. Ce que j'ai fait est explorer la dll avec Dependency Walker. J'ai vu que la fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    BOOL LoadModel(LPCTSTR pszFilename);
    dans le .h recu avec la dll existe dans la dll sous différente forme (d'après dependency walker):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    BOOL LoadModel(const char* pszFilename);
    J'ai juste changer le .h et maintenant ca fonctionne !

    Merci pour votre aide !

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

Discussions similaires

  1. Charger une dll avec MinGW
    Par bertrand125 dans le forum C++
    Réponses: 6
    Dernier message: 24/10/2012, 00h44
  2. [windows] charger une dll (avec classe)
    Par superpok dans le forum Windows
    Réponses: 11
    Dernier message: 09/09/2007, 11h15
  3. charger une DLL avec paramètres
    Par cyberchand dans le forum C#
    Réponses: 6
    Dernier message: 29/05/2007, 16h28
  4. Réponses: 3
    Dernier message: 24/11/2006, 11h12
  5. créér une dll avec borland c++ compiler
    Par juju62610 dans le forum Autres éditeurs
    Réponses: 5
    Dernier message: 26/02/2003, 09h46

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