Problème de dll (chargement) en C
Résolu
nikolas13
Messages postés
9
Date d'inscription
Statut
Membre
Dernière intervention
-
wxyz -
wxyz -
Bonjour
je suis actuelement en train de développer un programme en C.
Ce programme controle une carte d'acquisition analogique pour faire des mesures de tensions.
cette carte à besoin, pour etre utilisé d'une dll.
cette dll doit etre chargé au début du programme pour pouvoir utiliser les fonctions associés à la carte.
le problème est que le programme refuse de me charche cette dll.
j'ai tout bien fait comme l'exemple du manuel et pourtant, ça veut pas.
HINSTANCE dllHandle=NULL;
dllHandle=LoadLibrary("PCILabNT.dll");
après le LoadLibrary, dllHandle est != de NULL en théorie, et je peut utilise la carte; or là, il reste NULL.
PCILabNT.dll se trouve dans le dossier où je lance l'exe.
Je ne sais plus quoi faire.
Merci de vos réponse.
Nikolas13
je suis actuelement en train de développer un programme en C.
Ce programme controle une carte d'acquisition analogique pour faire des mesures de tensions.
cette carte à besoin, pour etre utilisé d'une dll.
cette dll doit etre chargé au début du programme pour pouvoir utiliser les fonctions associés à la carte.
le problème est que le programme refuse de me charche cette dll.
j'ai tout bien fait comme l'exemple du manuel et pourtant, ça veut pas.
HINSTANCE dllHandle=NULL;
dllHandle=LoadLibrary("PCILabNT.dll");
après le LoadLibrary, dllHandle est != de NULL en théorie, et je peut utilise la carte; or là, il reste NULL.
PCILabNT.dll se trouve dans le dossier où je lance l'exe.
Je ne sais plus quoi faire.
Merci de vos réponse.
Nikolas13
10 réponses
Bizzare. Assure toi que ta dll n'a pas été alterée. Que tu ne t'es pas gourré dans son orthographe etc...
Sinon regarde du côté de la fonction SetDllDirectory pour y rajouter le dossier courant. Ca doit donner un truc comme ".\\"
https://docs.microsoft.com/en-us/
Mais normalement le dossier courant y est déjà.
Au pire, regarde aussi du côté de LoadLibraryEx qui est plus poussé
https://docs.microsoft.com/en-us/
Sinon regarde du côté de la fonction SetDllDirectory pour y rajouter le dossier courant. Ca doit donner un truc comme ".\\"
https://docs.microsoft.com/en-us/
Mais normalement le dossier courant y est déjà.
Au pire, regarde aussi du côté de LoadLibraryEx qui est plus poussé
https://docs.microsoft.com/en-us/
bonjour
je ne pense pas que ma DLL soit altérée puisque ce n'est pas moi qui l'ai crée, de plus, dans l'exemple fourni avec le CD, ça marche.
j'ai essayé SetDllDirectory, rien a faire, toujours le problème.
LoadLibraryEx est plus pousée mais rien à faire non plus, la DLL n'est pas chargée.
Je sais plus quoi faire.
Nikolas13
je ne pense pas que ma DLL soit altérée puisque ce n'est pas moi qui l'ai crée, de plus, dans l'exemple fourni avec le CD, ça marche.
j'ai essayé SetDllDirectory, rien a faire, toujours le problème.
LoadLibraryEx est plus pousée mais rien à faire non plus, la DLL n'est pas chargée.
Je sais plus quoi faire.
Nikolas13
bonjour
j'ai mis la DLL dans le system32, rien a faire
ça marche pas non plus dans windows ou system.
normalement, la fonction cherche dans le répertoire courant (celui ou s'execute le exe) puis va chercher dans les répertoires windows.
et pourtant, ça marche toujours pas.
le problème, c'est que sans cette DLL, je peux rien faire.
Nikolas13
j'ai mis la DLL dans le system32, rien a faire
ça marche pas non plus dans windows ou system.
normalement, la fonction cherche dans le répertoire courant (celui ou s'execute le exe) puis va chercher dans les répertoires windows.
et pourtant, ça marche toujours pas.
le problème, c'est que sans cette DLL, je peux rien faire.
Nikolas13
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
getlasterror me renvoi 0, soit opération réussi
par contre, le dllHandle associé au chargement de la DLL reste NULL.
je sais, c'est à rien y comprendre.
par contre, le dllHandle associé au chargement de la DLL reste NULL.
je sais, c'est à rien y comprendre.
Tu crois que tu pourrais m'envoyer cette dll par mail histoire que je teste?
Alors j'ai testé avec wine (émulateur de windows sous linux) et sous windows 2000 SP4.
Dans les deux cas c'est la même chose: LoadLibrary me renvoie NULL et après GetLastError me renvoie l'erreur 1114 ce qui correspond à
https://docs.microsoft.com/en-us/
Attention, ça ne veux pas dire qu'il ne trouve pas la dll (là ce serait l'erreur 126), c'est qu'il n'arrive pas à l'initialiser.
Si tu peux la recompiler, ce serait l'idéal.
Dans les deux cas c'est la même chose: LoadLibrary me renvoie NULL et après GetLastError me renvoie l'erreur 1114 ce qui correspond à
ERROR_DLL_INIT_FAILED A dynamic link library (DLL) initialization routine failed.
https://docs.microsoft.com/en-us/
Attention, ça ne veux pas dire qu'il ne trouve pas la dll (là ce serait l'erreur 126), c'est qu'il n'arrive pas à l'initialiser.
Si tu peux la recompiler, ce serait l'idéal.
bonjour
merci de ton aide.
pour ce qui est de la recompilation de la DLL, c'est pas gagné puisque cette DLL est dur le CD fourni avec la carte d'acquisition, et j'ai pas le code source qui l'a générée.
donc il trouve la DLL mais il arrive pas à l'initialiser.je vais voir ce que je peux faire.
Nikolas13
merci de ton aide.
pour ce qui est de la recompilation de la DLL, c'est pas gagné puisque cette DLL est dur le CD fourni avec la carte d'acquisition, et j'ai pas le code source qui l'a générée.
donc il trouve la DLL mais il arrive pas à l'initialiser.je vais voir ce que je peux faire.
Nikolas13