PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV (précédentes versions) → Probleme de chargement des API d'une fichier .dll
Probleme de chargement des API d'une fichier .dll
Débuté par Saif HMISSA, 22 mar. 2017 15:51 - 8 réponses
Membre enregistré
5 messages
Posté le 22 mars 2017 - 15:51
Salut à tous,
J'utilise Windev20, j'ai une fichier mi.dll qui contient des API pour un lecteur RFID, mais j'ai un probleme au niveau du appel des fonctions, lors l'execution il m'affiche un message d'erreur qui montre qu'il n'as pas trouver le nom du fonction malgré qu'elle existe.
par exemple la fonction API_OpenComm("COM2",9600)
veuillez trouver ci-dessous un lien pour la fichier mi.dll:
https://mega.nz/#!8lgHlDjT!UjtnZKvxc...m5id2KiqOxRw3M

SVP c'est urgent
Membre enregistré
946 messages
Popularité : +102 (110 votes)
Posté le 22 mars 2017 - 17:42
Bonjour
Votre lien de téléchargement ne fonctionne pas
Utilisez "Dependency Walker" sur http://www.dependencywalker.com/, pour vérifier que votre fonction existe bien.
Posté le 22 mars 2017 - 19:30
Et montre nous le code que tu utilises

Le 3/22/2017 à 11:42 AM, Philippe Pasquali a écrit :
Bonjour
Votre lien de téléchargement ne fonctionne pas Utilisez "Dependency
Walker" sur http://www.dependencywalker.com/, pour vérifier que votre
fonction existe bien.
Membre enregistré
5 messages
Posté le 23 mars 2017 - 16:19
J'ai utilisé Dependency Walker et la fonction existe

voila le nouveau lien:
https://mega.nz/#!8lgHlDjT!UjtnZKvxcePR7PWkFZB6oBO7px-Vqm5id2KiqOxRw3M
Membre enregistré
5 messages
Posté le 23 mars 2017 - 16:23
mon code:

hInst est un entier
hInst = ChargeDLL("mi.dll")
AppelDLL32("mi.dll", "API_OpenComm", "COM2", 9600)


et j'ai utilisé aussi:

AppelDLL32("mi.dll", "API_OpenComm", "COM2", 9600)

et aussi:

API("mi.dll", "API_OpenComm", "COM2", 9600)
Message modifié, 23 mars 2017 - 16:23
Posté le 23 mars 2017 - 18:52
Le 23/03/2017, Saif HMISSA a supposé :
mon code:

hInst est un entier
hInst = ChargeDLL("mi.dll")
AppelDLL32("mi.dll", "API_OpenComm", "COM2", 9600)


et j'ai utilisé aussi:

AppelDLL32("mi.dll", "API_OpenComm", "COM2", 9600)

et aussi:

API("mi.dll", "API_OpenComm", "COM2", 9600)


si vous aviez regardé le prototype de la fonction :

Name : API_OpenComm
Delcaration : HANDLE API_OpenComm(int nCom, int nBaudrate)

vous auriez vu que le 1er param est un entier !!!!!

AppelDLL32("mi.dll", "API_OpenComm", 2, 9600)

--
Cordialement JeAn-PhI
Posté le 23 mars 2017 - 19:11
et la doc de la fonction en question est ?


Le 3/23/2017 à 10:23 AM, Saif HMISSA a écrit :
mon code:

hInst est un entier
hInst = ChargeDLL("mi.dll")
AppelDLL32("mi.dll", "API_OpenComm", "COM2", 9600)


et j'ai utilisé aussi:

AppelDLL32("mi.dll", "API_OpenComm", "COM2", 9600)

et aussi:

API("mi.dll", "API_OpenComm", "COM2", 9600)
Membre enregistré
946 messages
Popularité : +102 (110 votes)
Posté le 23 mars 2017 - 19:35
Bonsoir
vous ne le testez pas le retour de ChargeDll... Que vaut «hinst» ?
en général je fais ainsi
hDLL est un entier système
PathOfDll, DllName est une chaîne

PathOfDll = ComplèteRep(fRepEnCours()) // endroit ou se trouve la dll
DllName = PathOfDll + "mi.dll"

//----- Test la présence du fichier
IF NOT fFichierExiste(DllName) THEN
Erreur("fichier mi.dll non trouvée dans le répertoire : " + PathOfDll)
RETOUR
END

//----- Charge la dll
hDLL = ChargeDLL(DllName)
IF hDLL = 0 THEN
Erreur(ErreurInfo())
RETOUR
END

STOP //----- ici chez moi en 32bits pas d'erreur
API(DllName, "API_OpenComm", "COM2", 9600)

//----- A la fin
DéchargeDLL(hDLL)
Membre enregistré
5 messages
Posté le 27 mars 2017 - 15:58
Merci Philippe,
tout est nickel maintenant. :merci:
Message modifié, 27 mars 2017 - 15:59