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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 :
J'ai crée un fichier .def également pour l'exportation.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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);
La DLL se crée bien sous VC++.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
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.
Appel de la fonction :
Code : Sélectionner tout - Visualiser dans une fenêtre à part Public Declare Sub Test Lib "MyDll" (ByRef Crc As Long)
La fonction passe mais la valeur de retour est systématiquement à 0.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Dim Crc As Long Crc = 0 'Initialise la table des codes du Crc Test (Crc)
Des idées ou conseils sur l'utilisation des DLL VC++ en VB6 ?
Merci d'avance.
merci d'avance.
Partager