Passer un tableau de Bytes en paramètre d'une fonction dll
Taoufik77
Messages postés14Date d'inscriptiondimanche 17 octobre 2004StatutMembreDernière intervention 3 novembre 2004
-
31 oct. 2004 à 10:32
Taoufik77
Messages postés14Date d'inscriptiondimanche 17 octobre 2004StatutMembreDernière intervention 3 novembre 2004
-
1 nov. 2004 à 13:09
Bonjour,
j'ai une fonction dll (C++) qui prend en parametre un tableau de Bytes (CByteArray). Pour pouvoir l'appeler à partir d'une appli VB, j'ai défini dans ma dll un type "pointeur sur Byte Array" (Etant donné que les tableau sont passé par référence en VB):
typedef CByteArray *LPCByteArray;
le prototye de la fonction dll est :
void __stdcall maFonction(LPCByteArray sBuf);
la déclaration en VB:
Private Declare Sub maFonction Lib "ici le chemin complet de la dll" _
(ByRef ByteArray() As Byte)
l'appel de la fonction en VB:
Dim monMessageFormate(0 To 133) As Byte
For i = 0 To 133
monMessageFormate(i) = i
Next
maFonction monMessageFormate
Alors le problème c'est que, en debuggant la dll, je me rends-compte que je n'arrive pas à recevoir le message (monMessageFormate) tel que je l'ai passé dans l'appel en VB
Quelqu'un aurait une idée s'il vous plaît ?
touf
A voir également:
Passer un tableau de Bytes en paramètre d'une fonction dll
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 31 oct. 2004 à 12:26
Salut Taoufik77
La DLL dont il est question, c'est une DLL perso ?
Sinon, précise nous laquelle.
En général, quand on passe un tableau de valeurs à une DLL du système, elle demande aussi le nombre d'éléments dans ce tableau, et la commande a ce format :
Call LaFonction (LeTableau(0), LeNbrEléments)
Sinon, essaye de passer ton tableau en précisant le 1er élément
Call LaFonction (LeTableau(0))
Taoufik77
Messages postés14Date d'inscriptiondimanche 17 octobre 2004StatutMembreDernière intervention 3 novembre 2004 31 oct. 2004 à 19:16
Merci ShareVB et Jack,
ta proposition, shareVB, a l'air de marcher (j'arrive à récupérer le premier élément du tableau).
Seulement, je ne m'y connais pas trop dans les pointeurs. Si vous pouviez m'indiquer comment je dirai à mon objet CByteArray qu'il va être rempli par les bytes qui commencent à lpbBuf (celà suppose que les bytes sont stockés à partir de cet emplacement à la queuleuleu).