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 :
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);
J'ai crée un fichier .def également pour l'exportation.
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
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 : Sélectionner tout - Visualiser dans une fenêtre à part
Public Declare Sub Test Lib "MyDll" (ByRef Crc As Long)
Appel de la fonction :

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)
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.