Problème de dll (chargement) en C

Résolu/Fermé
nikolas13 Messages postés 9 Date d'inscription dimanche 22 octobre 2006 Statut Membre Dernière intervention 25 janvier 2007 - 28 oct. 2006 à 21:06
 wxyz - 18 juin 2009 à 09:46
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

10 réponses

kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
31 oct. 2006 à 01:01
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/
0
nikolas13 Messages postés 9 Date d'inscription dimanche 22 octobre 2006 Statut Membre Dernière intervention 25 janvier 2007 7
31 oct. 2006 à 08:54
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
0
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
31 oct. 2006 à 09:17
Et quand tu la mets dans system32, ça fonctionne?
0
nikolas13 Messages postés 9 Date d'inscription dimanche 22 octobre 2006 Statut Membre Dernière intervention 25 janvier 2007 7
31 oct. 2006 à 11:35
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
31 oct. 2006 à 11:48
GetLastError ça te renvoie quoi?
0
nikolas13 Messages postés 9 Date d'inscription dimanche 22 octobre 2006 Statut Membre Dernière intervention 25 janvier 2007 7
31 oct. 2006 à 17:15
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.
0
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
2 nov. 2006 à 19:36
Tu crois que tu pourrais m'envoyer cette dll par mail histoire que je teste?
0
nikolas13 Messages postés 9 Date d'inscription dimanche 22 octobre 2006 Statut Membre Dernière intervention 25 janvier 2007 7
3 nov. 2006 à 11:07
bonjour

pas de prob, je peux t'envoyer la DLL si tu veux bien la tester.

nikolas13
0
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
4 nov. 2006 à 21:37
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 à

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.
0
nikolas13 Messages postés 9 Date d'inscription dimanche 22 octobre 2006 Statut Membre Dernière intervention 25 janvier 2007 7
5 nov. 2006 à 12:03
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
0
nikolas13 Messages postés 9 Date d'inscription dimanche 22 octobre 2006 Statut Membre Dernière intervention 25 janvier 2007 7
16 nov. 2006 à 18:15
bonjour

ça y est, j'ai enfin réussi à charger la dll.
le problème venait de la carte, elle était pas trop bien instalé, et si la dll ne se charchait pas, c'est parce qu'elle n'arrivait pas à initialiser quelquechose sur la carte.

merci de votre aide.
Problème résolu.

Nikolas13
0
bonjour
jessaie dinstaller nero mais ca me fait impossible de charger dll le module specifié est introuvable
si vous pouvez maider svp merci
0