Access violation et dll

mrous Messages postés 29 Date d'inscription samedi 4 octobre 2003 Statut Membre Dernière intervention 28 juillet 2006 - 29 juin 2006 à 10:55
mrous Messages postés 29 Date d'inscription samedi 4 octobre 2003 Statut Membre Dernière intervention 28 juillet 2006 - 29 juin 2006 à 17:09
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

luther13 Messages postés 5 Date d'inscription mercredi 23 juin 2004 Statut Membre Dernière intervention 29 juin 2006
29 juin 2006 à 14:17
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
0
mrous Messages postés 29 Date d'inscription samedi 4 octobre 2003 Statut Membre Dernière intervention 28 juillet 2006
29 juin 2006 à 15:09
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.
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
29 juin 2006 à 16:25
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
0
mrous Messages postés 29 Date d'inscription samedi 4 octobre 2003 Statut Membre Dernière intervention 28 juillet 2006
29 juin 2006 à 17:09
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).
0
Rejoignez-nous