Bonjour ou bonsoir,

J'ai un programme écrit en VB6.
Celui-ci ne me lisant pas assez vite les fichiers(et étant limité), j'ai décidé d'écrire certaines fonctions de manipulations de fichiers dans une dll créée en C.
Je vais prendre comme exemple, la fonction ReadLine.
Dans le programme en VB6, j'ai déclaré cette fonction ainsi :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
Public Declare Function ReadLine Lib "lib.dll" (hFile As Long) As String
Dans la dll en C, j'ai déclaré cette fonction ainsi :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
void* DLL_EXPORT readDirectLine(HANDLE hFile);
(le void* c'est parce que je réencode le string pour qu'il soit accepté par VB6)

Quand je compile le programme et la dll, puis que je lance le programme, tout se passe à merveille.
Cependant, quand je veux lancer le programme via l'ide VB6 celui-ci me sort que l'appel à ma fonction ReadLine présente l'erreur : error 49, Bad DLL Calling convention.

Je sais qu'un HANDLE = Void* et que du coup, je devrais mettre :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
Public Declare Function ReadLine Lib "lib.dll" (ByRef hFile As Long) As String
au lieu de :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
Public Declare Function ReadLine Lib "lib.dll" (hFile As Long) As String
Mais ça ne marche pas, toujours la même erreur. J'ai essayé toutes les combinaisons possible sauf la bonne ^^

Pourriez-vous me dire ce que vous en pensez ? Et si vous avez une solution, je suis preneur.

Merci.

Cordialement,
Moi.

edit : #define DLL_EXPORT __declspec(dllexport)