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 :

Appel de fonction


Sujet :

C

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 34
    Points : 26
    Points
    26
    Par défaut Appel de fonction
    Bonjour à tous,
    j'ai fait une dll dynamique (bibliothèque à chargement explicite) avec plusieurs fonctions que j'utilise dans un projet, en suivant un tutoriel .
    dans le tutoriel il mette ce code pour l'appel de la fonction lors de son utilisation:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    HINSTANCE DLLHandle;
       typedef int(*Type_Pointeur_De_Fonction)(int, int);
       Type_Pointeur_De_Fonction Pointeur_Fonction;
       DLLHandle = LoadLibrary("dll.dll");
       Pointeur_Fonction = (Type_Pointeur_De_Fonction)GetProcAddress(DLLHandle,"addition");
     
       int resultat = 0;
       resultat = Pointeur_Fonction(3,7);
       printf("Le resultat est: %d\n", resultat);
    Ma question est comment faire si on a plusieurs fonctions dans une dll? l'appel de chaque fonction se fait comment? où faut il créer une dll par fonction?

    Merci pour votre aide.

  2. #2
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 481
    Points : 13 679
    Points
    13 679
    Billets dans le blog
    1
    Par défaut
    As-tu compris chaque ligne de ce bout de code ?

    Si oui, tu as déjà la réponse à ta question. Si non, il serait bon de toutes les comprendre pour pouvoir aller plus loin.

    La réponse à la question est donnée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Pointeur_Fonction = (Type_Pointeur_De_Fonction)GetProcAddress(DLLHandle,"addition");
    GetProcAddress renvoie l'adresse de la fonction. Le premier paramètre sert à identifier la dll que l'on utilise et le second est le nom de la fonction que l'on veut importer.

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    1 821
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 821
    Points : 979
    Points
    979
    Par défaut
    Salut,

    As-tu bien compris ce qu'est une dll : j'ai quelques doutes avec ce que tu dis :
    Citation Envoyé par filoo85 Voir le message
    Bonjour à tous,
    où faut il créer une dll par fonction?
    => dans ton cas, une dll ne se crée pas mais s'utilise...
    => une dll est une bibliothèque qui contient plein de fonctions : le but est donc juste de pouvoir utiliser ces fonctions.

    As-tu bien compris ce qu'est un pointeur de fonction ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
       typedef int(*Type_Pointeur_De_Fonction)(int, int); // déclaration du type "int fonction(int x, int y)"
       ...
       ...
       Type_Pointeur_De_Fonction Pointeur_Fonction; // déclaration de la variable Pointeur_Fonction
       ...
       ...
       Pointeur_Fonction = (Type_Pointeur_De_Fonction)GetProcAddress(DLLHandle,"addition"); // affectation de la valeur de Pointeur_Fonction
       ...
       ...
       resultat = Pointeur_Fonction(3,7); // exécution du code pointé par la valeur de Pointeur_Fonction
    => comprends-tu exactement la signification de chaque ligne ?

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 34
    Points : 26
    Points
    26
    Par défaut
    Merci pour vos réponses j'ai bien relu le tuto, j'ai appliqué et ça marche.

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

Discussions similaires

  1. Appeler une fonction avec "action" ds un
    Par drinkmilk dans le forum ASP
    Réponses: 4
    Dernier message: 20/04/2004, 14h54
  2. Réponses: 4
    Dernier message: 19/04/2004, 13h41
  3. [JSP] Appeler une fonction
    Par Patrick95 dans le forum Servlets/JSP
    Réponses: 10
    Dernier message: 23/12/2003, 13h44
  4. Appel à des fonctions incluses dans des DLL
    Par Greybird dans le forum Langage
    Réponses: 3
    Dernier message: 26/05/2003, 13h33
  5. Appeler une fonction avec/sans parenthèses
    Par haypo dans le forum Algorithmes et structures de données
    Réponses: 8
    Dernier message: 29/12/2002, 18h48

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