Bonjour a tous,
J'ai essayé d'utiliser avec ACCESS 2003 et VBA une DLL écrite en C fournie par un constructeur de matériel, servant à configurer ses équipements.
Je l'ai déclaré ainsi dans un module :
Et je l'appelle de cette facon via un formulaire et un bouton pour tester dans un premier temps :
Code : Sélectionner tout - Visualiser dans une fenêtre à part Public Declare Function mafonction Lib "madll" (ByVal PortCom As Byte, ByVal Mode As Byte, ByVal Config As Byte, ByVal Debug2 As Byte, ByRef Context As Byte) As Byte
J'ai un message d'erreur à l’exécution :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Dim test, val1, val2, val3, val4, toto As Byte val1 = 41 val2 = 9 val3 = 1 val4 = 1 toto=1 test = mafonction (val1, val2, val3, val4, toto)
Erreur d’exécution '49'
Convention d'appel de DLL incorrecte.
La doc de cette DLL me donne les infos suivantes sur cette fonction que j'essaye d'utiliser :
J'ai parcouru des dizaines de sites sur Internet pour comprendre ce qu'il se passe, et je suppose que cela est lié à la façon dont sont déclarées les variables étant donné que l'une d'elle dans la DLL est un pointeur C (d'ou le ByRef Context As Byte dans la déclaration de la fonction).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 Paramètres en entrée unsigned char mafonction (unsigned char PortCom, unsigned char Mode, unsigned char Config, unsigned char Debug, unsigned char *Context ) ; Paramètres en sortie Context
Mais rien n'y fait j'ai systématiquement cette erreur.
Je ne débute pas en VBA, mais ne n'ai jamais vraiment utilisé de DLL de ce type la avec des primitives complexes associées.
Si quelqu'un peut m'aider...
Merci.
Partager