Access violation et dll

Signaler
Messages postés
29
Date d'inscription
samedi 4 octobre 2003
Statut
Membre
Dernière intervention
28 juillet 2006
-
Messages postés
29
Date d'inscription
samedi 4 octobre 2003
Statut
Membre
Dernière intervention
28 juillet 2006
-
Bonjour,

j'ai un probleme avec l'utilisation d'une dll:

lorsque je l'inclue en effectuant un clic droit sur le projet (VC++ 6) et add files to project, la compilation se passe bien, il ne me met pas d'erreur lorsque j'essaye d'accéder aux fonctions de la dll mais lorsque je lance mon prog, j'obtiens l'erreur unhandled exception (NTDLL.DLL): 0xc0000005 access violation avant meme que je le programme est accédé au main qui contient l'utilisation des fonctions de la dll.

lorsque je l'inclue en allant dans project/settings/link et que je mets le nom du .lib dans library module, comme avec l'autre methode je n'ai pas de problemes de compilation mais le prog plante lorsque j'essaye d'acceder a une fonction de ma dll: toujours une erreur de type access violation.
Lorsque je debug l'erreur me renvoie sur un code ne contenant que des lignes avec des ???.

Je trouve ca vraiment bizarre vu que j'inclue d'autres dll dans mon prog (avec la 1ere methode) et que je n'ai pas de pb.

Avez vous une idée de mon erreur?
Est-ce que ca peut venir des options de compilations?
Ou de la dll (ou le.lib ou le .h) quie peuvent ne pas etre compatible avec VC++?

Merci d'avance pr vos reponses

4 réponses

Messages postés
5
Date d'inscription
mercredi 23 juin 2004
Statut
Membre
Dernière intervention
29 juin 2006

Tout depend du contenu de votre dll.
Je suppose qu'il s'agit d'une dll livrée avec un .lib et des .h
Rajouter uniquement les .h et .lib au projet.

S'il y a des erreur d'accès violation, ils sont alors du au contenu de la dll.
Les methodes à l'interieur de la dll plantent.
Utilisez des try..catch pour recuperer ces erreurs

Luther13
Messages postés
29
Date d'inscription
samedi 4 octobre 2003
Statut
Membre
Dernière intervention
28 juillet 2006

Je n'ai mis que les .lib des dll dans le projet mais je ne vois pas comment mettre des try catch vu que lors de l'exec, il n'execute aucun code meme pas la premiere ligne du main.

Avec la premiere methode le prog s'arrete sur la ligne suivante: push + addr d'un registre.
et le context indique NTDLL!  + addr de l'instruction push ci dessus.
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
14
Ce n'est pas nécessairement ta librairie. C'est du type 0xc0000005? C'est probablement un débordement tampon. Écriture non autorisé dans un zone mémoire:

char test[5];
test[10] = 0 <- Écriture non autorisé

Même chose avec un malloc. Vérifie dans ton programme. Si tu trouve pas, ça peut provenir de la librairie mais ça m'étonnerais beacoup que ce soit elle. Qui à fait cette librairies?

___________________________________________
Les plus grands esprits trouvent toujours une solution
Messages postés
29
Date d'inscription
samedi 4 octobre 2003
Statut
Membre
Dernière intervention
28 juillet 2006

mon programme est tres basique pr le moment je n'ai aucun pointeur actuellement (d'ailleurs l'execution ne va pas jusque la). C pour cela que je pense que ca vient de la librairie.
La librairie a ete realisé par une personne de ma société en utilisant Matlab Compiler, cependant il existe une option de configuration du compiler qui permet de choisir le compilateur C à utiliser (Visual, builder, ...) et je ne suis pas sur qu'il ait mis la bonne (j'attends sa reponse).