PC SOFT

PROFESSIONAL NEWSGROUPS
WINDEVWEBDEV and WINDEV Mobile

Home → WINDEV (earlier versions) → Probleme de chargement des API d'une fichier .dll
Probleme de chargement des API d'une fichier .dll
Started by Saif HMISSA, Mar., 22 2017 3:51 PM - 8 replies
Registered member
5 messages
Posted on March, 22 2017 - 3:51 PM
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
Registered member
945 messages
Popularité : +102 (110 votes)
Posted on March, 22 2017 - 5:42 PM
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.
Posted on March, 22 2017 - 7:30 PM
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.
Registered member
5 messages
Posted on March, 23 2017 - 4:19 PM
J'ai utilisé Dependency Walker et la fonction existe

voila le nouveau lien:
https://mega.nz/#!8lgHlDjT!UjtnZKvxcePR7PWkFZB6oBO7px-Vqm5id2KiqOxRw3M
Registered member
5 messages
Posted on March, 23 2017 - 4:23 PM
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 modified, March, 23 2017 - 4:23 PM
Posted on March, 23 2017 - 6:52 PM
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
Posted on March, 23 2017 - 7:11 PM
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)
Registered member
945 messages
Popularité : +102 (110 votes)
Posted on March, 23 2017 - 7:35 PM
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)
Registered member
5 messages
Posted on March, 27 2017 - 3:58 PM
Merci Philippe,
tout est nickel maintenant. :merci:
Message modified, March, 27 2017 - 3:59 PM