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 :

Comment faire un apelle à une DLL ?


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    238
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Mai 2006
    Messages : 238
    Par défaut Comment faire un apelle à une DLL ?
    Bonjour,
    J'ai créer une DLL avec c++ et je ne trouve pas un tutorial claire et simple qui montre comment je dois faire pour réussir à faire un apelle à une DLL et utilisé ces fonctions.

    Merci pour votre aide.

  2. #2
    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
    Bonjour,

    Citation Envoyé par Chikh001 Voir le message
    Bonjour,
    J'ai créer une DLL avec c++ et je ne trouve pas un tutorial claire et simple qui montre comment je dois faire pour réussir à faire un apelle à une DLL et utilisé ces fonctions.

    Merci pour votre aide.
    Sous Windows, pour appeler une DLL on a deux possibilités :

    1) - Soit on lie en statique sur la DLL.
    2) - Soit on appelle la DLL à l'exécution (chargement dynamique).

    1)

    Lors de la création de la DLL, l'éditeur de lien produit un fichier .lib sur lequel le programme appelant la DLL devra être lié. On inclura aussi le fichier d'en-tête (*.h) nécessaire dans le code du programme (celui qui déclare les classes, fonctions, variables globales, etc. de la DLL).

    2)

    Pour une liaison dynamique (on a alors plus besoin du *.lib), on utilisera plusieurs APIs :

    - LoadLibrary() qui charge la bibliothèque dynamique (*.dll) dans l'espace d'adressage du processus et appelle la fonction DllMain.

    cf. (liens MSDN) :
    LoadLibrary et DllMain

    LoadLibrary retourne un HMODULE (adresse du chargement en mémoire de la DLL).

    On utilise ensuite la fonction GetProcAdress() pour obtenir un pointeur de fonction.

    Un exemple est disponible sur la MSDN :

    http://msdn2.microsoft.com/en-us/library/ms686944.aspx

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    238
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Mai 2006
    Messages : 238
    Par défaut
    Merci pour votre aide,

    J'ai choisi la deuxième solution mais j'ai un petit problème avec la syntaxe de LoadLibrary().

    Merci.

  4. #4
    Membre expérimenté Avatar de Rupella
    Inscrit en
    Février 2005
    Messages
    286
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 286
    Par défaut
    Quel problème de syntaxe ???
    tu lui donnes le nom de la dll à charger, c'est simple comme bonjour...

    Note : la dll doit se trouver dans le répertoire de l'application, ou dans un des répertoires d uPATH... si tu ne donnes pas le chemin de la dll dans le LoadLibrary().

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    238
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Mai 2006
    Messages : 238
    Par défaut
    voici mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #include "cm.h"
    #include <windows.h>
    #include "stdafx.h"
     
     
    int main(int argc, char* argv[])
    {
    	HINSTANCE hInstLibrary;
    	hInstLibrary= LoadLibrary("madll.dll"); 
    	return 0;
    }
    et le message d'erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    D:\Program Files\Microsoft Visual Studio\MyProjects\monprojet\monprojet.cpp(10) : error C2065: 'HINSTANCE' : undeclared identifier
    D:\Program Files\Microsoft Visual Studio\MyProjects\monprojet\monprojet.cpp(10) : error C2146: syntax error : missing ';' before identifier 'hInstLibrary'
    D:\Program Files\Microsoft Visual Studio\MyProjects\monprojet\monprojet.cpp(10) : error C2065: 'hInstLibrary' : undeclared identifier
    D:\Program Files\Microsoft Visual Studio\MyProjects\monprojet\monprojet.cpp(11) : error C2065: 'LoadLibrary' : undeclared identifier
    Error executing cl.exe.

  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
    Essaye dans cette ordre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    #include "stdafx.h"
    #include <windows.h>
    #include "cm.h"

Discussions similaires

  1. Comment faire pour lier une DLL avec mon application ?
    Par therev123 dans le forum wxWidgets
    Réponses: 1
    Dernier message: 25/07/2012, 21h50
  2. Comment faire apelle à une DLL ?
    Par Chikh001 dans le forum C++
    Réponses: 1
    Dernier message: 01/10/2007, 15h38
  3. Comment faire pour afficher une image ds une dbgrid
    Par totomaze dans le forum Bases de données
    Réponses: 2
    Dernier message: 16/10/2004, 15h31
  4. Comment faire pour killer une application ?
    Par tintin22 dans le forum API, COM et SDKs
    Réponses: 4
    Dernier message: 17/08/2004, 18h16
  5. comment faire pour qu'une application soit toujours visible ?
    Par goldbar dans le forum Langages de programmation
    Réponses: 2
    Dernier message: 28/03/2004, 14h35

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