Rechercher : dans
Par :

Problème de dll (chargement) en C

Dernière réponse le 18 jun 2009 à 09:46:08 nikolas13, le 28 oct 2006 à 21:06:04 
 Signaler ce message aux modérateurs

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

Meilleures réponses pour « Problème de dll (chargement) en C » dans :
[Windows] Nettoyage des DLL chargées en mémoire VoirLe système d'exploitation Windows conserve les librairies (DLL) récemment utilisées en mémoire, afin de potentiellement accélérer le démarrage des applications au prochain lancement. Néanmoins ces librairies consomment de l'espace mémoire. Ainsi,...
Télécharger CygWin VoirCygwin est un environnement UNIX pour Windows composé: d'un shell Unix d'une librairie dynamique (DLL) chargée de fournir une couche d'émulation Unix pour le système Windows d'un ensemble de librairies, sources et exécutables adaptés à Cygwin...
Load Balancing (équilibrage de charge) VoirUne des principales difficultés rencontrées par les administrateurs réseaux est la capacité à monter en charge, c'est-à-dire la faculté de répondre aux requêtes avec un temps de réponse acceptable, même en cas d'affluence massive. Equilibrage de...

1

kilian, le 31 oct 2006 à 01:01:50

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 ".\\"
http://msdn.microsoft.com/...
Mais normalement le dossier courant y est déjà.

Au pire, regarde aussi du côté de LoadLibraryEx qui est plus poussé
http://msdn.microsoft.com/...

..et le...le...enfin, non parce c'est...ya...quand...bah tu sais là le...

Répondre à kilian

2

nikolas13, le 31 oct 2006 à 08:54:22

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

Répondre à nikolas13

3

kilian, le 31 oct 2006 à 09:17:36

Et quand tu la mets dans system32, ça fonctionne?

..et le...le...enfin, non parce c'est...ya...quand...bah tu sais là le...

Répondre à kilian

4

nikolas13, le 31 oct 2006 à 11:35:54

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

Répondre à nikolas13

5

kilian, le 31 oct 2006 à 11:48:18

GetLastError ça te renvoie quoi?

..et le...le...enfin, non parce c'est...ya...quand...bah tu sais là le...

Répondre à kilian

6

nikolas13, le 31 oct 2006 à 17:15:43

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.

Répondre à nikolas13

7

kilian, le 2 nov 2006 à 19:36:03

Tu crois que tu pourrais m'envoyer cette dll par mail histoire que je teste?

..et le...le...enfin, non parce c'est...ya...quand...bah tu sais là le...

Répondre à kilian

8

nikolas13, le 3 nov 2006 à 11:07:55

Bonjour

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

nikolas13

Répondre à nikolas13

9

kilian, le 4 nov 2006 à 21:37:31

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.

http://msdn.microsoft.com/...

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.
..et le...le...enfin, non parce c'est...ya...quand...bah tu sais là le...

Répondre à kilian

10

nikolas13, le 5 nov 2006 à 12:03:14

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

Répondre à nikolas13

11

nikolas13, le 16 nov 2006 à 18:15:48

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

Répondre à nikolas13

12

 wxyz, le 18 jun 2009 à 09:46:08

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

Répondre à wxyz
Collection CommentÇaMarche.net