PC SOFT

GRUPOS DE DISCUSSÃO PROFISSIONAL
WINDEVWEBDEV e WINDEV Mobile

Inicio → WINDEV (versões anteriores) → Probleme de chargement des API d'une fichier .dll
Probleme de chargement des API d'une fichier .dll
Iniciado por Saif HMISSA, mar., 22 2017 3:51 PM - 8 respostas
Membro registado
5 mensagems
Publicado em março, 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
Membro registado
946 mensagems
Popularité : +102 (110 votes)
Publicado em março, 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.
Publicado em março, 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.
Membro registado
5 mensagems
Publicado em março, 23 2017 - 4:19 PM
J'ai utilisé Dependency Walker et la fonction existe

voila le nouveau lien:
https://mega.nz/#!8lgHlDjT!UjtnZKvxcePR7PWkFZB6oBO7px-Vqm5id2KiqOxRw3M
Membro registado
5 mensagems
Publicado em março, 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)
Mensagem modificada, março, 23 2017 - 4:23 PM
Publicado em março, 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
Publicado em março, 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)
Membro registado
946 mensagems
Popularité : +102 (110 votes)
Publicado em março, 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)
Membro registado
5 mensagems
Publicado em março, 27 2017 - 3:58 PM
Merci Philippe,
tout est nickel maintenant. :merci:
Mensagem modificada, março, 27 2017 - 3:59 PM