Problème de dll (chargement) en C

Résolu
nikolas13 Messages postés 9 Date d'inscription   Statut Membre Dernière intervention   -  
 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

10 réponses

kilian Messages postés 8732 Date d'inscription   Statut Modérateur Dernière intervention   1 526
 
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   Statut Membre Dernière intervention   7
 
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 8732 Date d'inscription   Statut Modérateur Dernière intervention   1 526
 
Et quand tu la mets dans system32, ça fonctionne?
0
nikolas13 Messages postés 9 Date d'inscription   Statut Membre Dernière intervention   7
 
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 8732 Date d'inscription   Statut Modérateur Dernière intervention   1 526
 
GetLastError ça te renvoie quoi?
0
nikolas13 Messages postés 9 Date d'inscription   Statut Membre Dernière intervention   7
 
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 8732 Date d'inscription   Statut Modérateur Dernière intervention   1 526
 
Tu crois que tu pourrais m'envoyer cette dll par mail histoire que je teste?
0
nikolas13 Messages postés 9 Date d'inscription   Statut Membre Dernière intervention   7
 
bonjour

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

nikolas13
0
kilian Messages postés 8732 Date d'inscription   Statut Modérateur Dernière intervention   1 526
 
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   Statut Membre Dernière intervention   7
 
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   Statut Membre Dernière intervention   7
 
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
wxyz
 
bonjour
jessaie dinstaller nero mais ca me fait impossible de charger dll le module specifié est introuvable
si vous pouvez maider svp merci
0