PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV (versiones precedentes) → Probleme de chargement des API d'une fichier .dll
Probleme de chargement des API d'une fichier .dll
Iniciado por Saif HMISSA, 22,mar. 2017 15:51 - 8 respuestas
Miembro registrado
5 mensajes
Publicado el 22,marzo 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
Miembro registrado
945 mensajes
Popularité : +102 (110 votes)
Publicado el 22,marzo 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.
Publicado el 22,marzo 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.
Miembro registrado
5 mensajes
Publicado el 23,marzo 2017 - 16:19
J'ai utilisé Dependency Walker et la fonction existe

voila le nouveau lien:
https://mega.nz/#!8lgHlDjT!UjtnZKvxcePR7PWkFZB6oBO7px-Vqm5id2KiqOxRw3M
Miembro registrado
5 mensajes
Publicado el 23,marzo 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)
Mensaje modificado, 23,marzo 2017 - 16:23
Publicado el 23,marzo 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
Publicado el 23,marzo 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)
Miembro registrado
945 mensajes
Popularité : +102 (110 votes)
Publicado el 23,marzo 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)
Miembro registrado
5 mensajes
Publicado el 27,marzo 2017 - 15:58
Merci Philippe,
tout est nickel maintenant. :merci:
Mensaje modificado, 27,marzo 2017 - 15:59