Bonjour à tous !

Je tourne en rond depuis un moment alors je viens solliciter votre aide
Je cherche à implémenter la DLL LibMPSSE fournie par FTDI pour envoyer des commandes à un FT232H (convertisseur USB / série, SPI, I²C).
A chaque fois que j'essaie d'appeler une fonction de cette DLL, j'obtiens l'erreur "Bad DLL calling conversion".
J'ai vérifié la documentation de FTDI mais je ne trouve pas d'erreur.
La documentation est disponible ici : http://www.ftdichip.com/Support/Soft...bMPSSE-I2C.htm

Voici la déclaration dans mon programme :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
Public Declare Function I2C_GetNumChannels Lib "LIBMPSSE.DLL" (ByRef numChannels As Long) As Long
Et le code qui appelle la fonction :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
Dim Channels As Long, Status As Long
Status = I2C_GetNumChannels(Channels)
La déclaration de la fonction I2C_GetNumChannels dans le code source de la DLL est :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
FTDI_API FT_STATUS I2C_GetNumChannels(uint32 *numChannels)
Avec les déclarations utiles :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
typedef ULONG	FT_STATUS;
#define FTDI_API __declspec(dllexport)
Si je ne me trompe pas, d'après ces définitions, la fonction attend en paramètre un long par référence et retourne un long.

D'autre part, si j'utilise la déclaration d'une fonction d'une autre DLL de FTDI, je n'ai pas d'erreur (le code n'est pas de moi) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
Public Declare Function FT_ListDevices Lib "FTD2XX.DLL" (ByVal arg1 As Long, ByVal arg2 As String, ByVal dwFlags As Long) As Long
Qu'en pensez-vous ?
Est-ce que le problème peut venir de la DLL elle-même ?

Merci !