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

WinDev Discussion :

Utilisation d'une dll externe [WD12]


Sujet :

WinDev

  1. #1
    Membre averti Avatar de rems033
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    513
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2007
    Messages : 513
    Points : 345
    Points
    345
    Par défaut Utilisation d'une dll externe
    Bonjour à tous,

    Je suis entrain de cérer un utilitaire de test pour un accepteur/recycleur de Billet.

    Le constructeur nous a transmis une dll (ou même 4 mais le chargement d'une seule est utile je pense étant donné que les 3 autres sont dans des includes de la première...) pour communiquer avec ce périph via usb.

    Mon problème se situe lorsque je dois appeler une méthode de cette DLL prenant en paramètre 3 pointeurs de fonctions.

    Voici le code posant problème avec mes 3 foutus pointeurs de fonctions ! :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    PROCEDURE OpenWithSN(sn est une chaîne)
    resDLL = AppelDLL32(C_BNR_DLL,"bnr_OpenWithSerialNr ", sn, &operationCompleteOccuredMethod, &statusOccuredMethod, &intermediateOccuredMethod)
    Voici l'implémentation des 3 fonctions "callback" pointorisées :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    PROCEDURE operationCompleteOccuredMethod(identificationId est un entier sur 8 octets, operationId est un entier sur 8 octets, rst est un entier sur 8 octets, extendedResult est un entier sans signe sur 8 octets, data est un entier sur 8 octets)
    PROCEDURE statusOccuredMethod(status est un entier sur 8 octets, rst est un entier sur 8 octets, extendedResult est un entier sur 8 octets, details est un entier sur 8 octets)
    PROCEDURE intermediateOccuredMethod(identificationId est un entier sur 8 octets, operationId est un entier sur 8 octets, reason est un entier sur 8 octets, data est un entier sur 8 octets)
    Je vous fournit tout de même les prototypes "C" des méthodes de la DLL :
    BNR_OPEN
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    BNRDLL_API T_BnrXfsResult CALLTYPE bnr_OpenWithSerialNr  ( T_XfsUnitId  serialNr,  
      T_OperationCompleteOccuredMethod  operationCompleteOccured,  
      T_StatusOccuredMethod  statusOccured,  
      T_IntermediateOccuredMethod  intermediateOccured   
     )
    T_OperationCompleteOccuredMethod operationCompleteOccured :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    typedef void(__stdcall * T_OperationCompleteOccuredMethod)(LONG32 identificationId, LONG32 operationId, LONG32 result, LONG32 extendedResult, void *data)
    T_StatusOccuredMethod statusOccured :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    typedef void(__stdcall * T_StatusOccuredMethod)(LONG32 status, LONG32 result, LONG32 extendedResult, void *details)
    T_IntermediateOccuredMethod intermediateOccured :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    typedef void(__stdcall * T_IntermediateOccuredMethod)(LONG32 identificationId, LONG32 operationId, LONG32 reason, void *data)
    Ca fait 2 jours que je suis dessus et je sèche vraiement...
    Merci pour votre aide car je n'y comprends plus rien avec ses pointeurs!

  2. #2
    Membre expert
    Avatar de Emmanuel Lecoester
    Profil pro
    Inscrit en
    Février 2003
    Messages
    1 493
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Février 2003
    Messages : 1 493
    Points : 3 266
    Points
    3 266
    Par défaut
    Pour ce cas particulier (pointeurs de fonctions en C) je te préconise d'écrire une dll en C exploitant ta dll. Cette DLL intermédiaire serait appeler de manière "traditionnelle" à partir de WinDev.

    L'éditeur ne te fournit pas un package dotnet ?
    Emmanuel Lecoester
    => joomla addict.

  3. #3
    Membre averti Avatar de rems033
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    513
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2007
    Messages : 513
    Points : 345
    Points
    345
    Par défaut
    Et non malheureusement...
    Tout ce que j'ai ce sont les .h de la DLL de l'éditeur...

  4. #4
    Membre expert
    Avatar de Emmanuel Lecoester
    Profil pro
    Inscrit en
    Février 2003
    Messages
    1 493
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Février 2003
    Messages : 1 493
    Points : 3 266
    Points
    3 266
    Par défaut
    donc une petite dll en C avec des point d'entrée plus "commun"
    Emmanuel Lecoester
    => joomla addict.

  5. #5
    Membre averti Avatar de rems033
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    513
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2007
    Messages : 513
    Points : 345
    Points
    345
    Par défaut
    C'est ce que je suis entrain de faire...
    Merci pour tes lumières !

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

Discussions similaires

  1. [Lazarus] Utilisation d'une DLL externe = crash !
    Par [ZiP] dans le forum Lazarus
    Réponses: 17
    Dernier message: 24/02/2013, 12h31
  2. [WD12] utiliser une DLL externe
    Par yann_72 dans le forum WinDev
    Réponses: 8
    Dernier message: 31/07/2008, 09h12
  3. Utilisation d'une classe externe dans une DLL
    Par xChRiSx dans le forum C++
    Réponses: 6
    Dernier message: 04/06/2007, 09h32
  4. Probleme d'utilisation d'une DLL externe
    Par Pasiphae dans le forum C++/CLI
    Réponses: 2
    Dernier message: 19/02/2007, 15h17
  5. dll ActiveX utilisant une DLL externe
    Par Metal3d dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 10/11/2005, 18h02

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