Problème utilisation DLL VC++
Bonjour,
Je souhaite utiliser une DLL VC++ 6.0 à partir de mon application VB6, mais j'ai quelque problème.
Voici les prototypes des mes fonctions :
Code:
1 2 3
| unsigned long __stdcall checksum(unsigned char * trame, unsigned long * crc_table, unsigned long start, unsigned long size)
void __stdcall checksumTable(unsigned long * crc_table)
void __stdcall Test(int * valeur) |
dans le fichier .h j'ai ajouté les déclarations suivantes :
Code:
1 2 3
| extern unsigned long __stdcall checksum(unsigned char *, unsigned long *, unsigned long, unsigned long);
extern void __stdcall checksumTable(unsigned long *);
extern void __stdcall Test(int * valeur); |
J'ai crée un fichier .def également pour l'exportation.
Code:
1 2 3 4 5 6 7 8
| LIBRARY "MyDll"
DESCRIPTION 'Windows Dynamic Link Library'
EXPORTS
; Explicit exports can go here
checksum @1
checksumTable @2
Test @3 |
La DLL se crée bien sous VC++.
Sous VB j'ai ajouté la déclaration suivante pour essayer la fonction Test qui est trés simple et se contente de fixer la valeur du paramètre passé en référence à 1.
Code:
Public Declare Sub Test Lib "MyDll" (ByRef Crc As Long)
Appel de la fonction :
Code:
1 2 3 4
| Dim Crc As Long
Crc = 0
'Initialise la table des codes du Crc
Test (Crc) |
La fonction passe mais la valeur de retour est systématiquement à 0.
Des idées ou conseils sur l'utilisation des DLL VC++ en VB6 ?
Merci d'avance.
merci d'avance.