Utiliser une dll C sous VB6 (pb de conversion de type)
cs_sophie75
Messages postés6Date d'inscriptiondimanche 22 décembre 2002StatutMembreDernière intervention23 mars 2006
-
22 mars 2006 à 22:05
rvblog
Messages postés792Date d'inscriptionvendredi 4 mars 2005StatutMembreDernière intervention12 juin 2012
-
23 mars 2006 à 14:44
Bonjour,
Je souhaite utiliser une dll qui a été écrite en C, dans un programme
VB. Grâce à la fonction Lib, j'arrive à appeler certaines méthodes de
cette dll, mais une méthode me pose encore problème: celle-ci prend en
paramètres 2 pointeurs, sur chaîne de caractères et sur long. Si
quelqu'un pouvait me dire comment redéclarer la fonction sous VB çà me
sauverait !!
Voici le prototype de la Fonction C:
Function maFonction( long* taillemessage, char* message)
Voilà comment j'ai essayé de la déclarer sous VB mais çà ne marche pas,
il me met une erreur "types incompatibles avec la dll" au moment où je
fais appel à la fonction
Private Declare Function maFonction _
Lib "madll.dll" ( _
ByRef taillemessage As Long, _
ByVal message As String _
)
A voir également:
Utiliser une dll C sous VB6 (pb de conversion de type)
rvblog
Messages postés792Date d'inscriptionvendredi 4 mars 2005StatutMembreDernière intervention12 juin 20127 23 mars 2006 à 00:59
Salut sophie, salut titi,
je'aimerais plutôt pour savoir ce qu'est Function dans ton proto C, une structure, un handle?
Et si la valeur de retour n'est pas indispensable, pas utile de la déclarer (dans VB).
ensuite pour le long*taillemessage, je mettrais ByVal taillemessage As Long.
enfin, fais voir l'appel, c'est lui qui déclenche l'erreur (et si tu fais voir l'appel, fais voir aussi les déclarations des participants à l'appel).
a+
rvblogn<SUP>
</SUP><SUP>Je veux ton bien... et je l'aurais
</SUP>
cs_sophie75
Messages postés6Date d'inscriptiondimanche 22 décembre 2002StatutMembreDernière intervention23 mars 2006 23 mars 2006 à 12:15
Merci pour votre aide
Je vais essayer d'être un peu plus précise, j'avais en effet oublié le retour de la fonction
Fonction C:
public int maFonction(long* taillemessage, char* message)
Fonction redéclarée en VB:
Private Declare Function maFonction _
Lib "madll.dll" ( _
ByRef taillemessage As Long, _
ByVal message As String _
)
( J'ai aussi essayé de mettre taillemessage en byval, et message Byref mais toutes les combinaisons renvoient la même erreur)
Appel de la fonction en VB:
Dim iResultat as Integer
iResultat = maFonction(4, "toto")
Resultat:
Message d'erreur: Convention d'appel de la dll incorrect
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_sophie75
Messages postés6Date d'inscriptiondimanche 22 décembre 2002StatutMembreDernière intervention23 mars 2006 23 mars 2006 à 13:01
Décidement... j'ai de nouveau oublié le paramètre de retour dans ma fonction VB. Il s'agit donc bien de:
Fonction redéclarée en VB:
Private Declare Function maFonction _
Lib "madll.dll" ( _
ByRef taillemessage As Long, _
ByVal message As String _
) as Integer
Appel de la fonction en VB:
Dim iResultat as Integer
iResultat = maFonction(4, "toto")
Par contre, je viens de m'apercevoir qu'en mettant les 2 paramètres de la fonction en "ByVal" et en appelant la fonction comme ci-dessus, VB plante carrément et affiche le message:
Visual Basic a rencontré un problème et doit fermer. Nous vous prions de nous excuser pour le désagrément encouru.