mrous
Messages postés29Date d'inscriptionsamedi 4 octobre 2003StatutMembreDernière intervention28 juillet 2006
-
29 juin 2006 à 10:55
mrous
Messages postés29Date d'inscriptionsamedi 4 octobre 2003StatutMembreDernière intervention28 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++?
luther13
Messages postés5Date d'inscriptionmercredi 23 juin 2004StatutMembreDernière intervention29 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
mrous
Messages postés29Date d'inscriptionsamedi 4 octobre 2003StatutMembreDernière intervention28 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.
SAKingdom
Messages postés3212Date d'inscriptionlundi 7 novembre 2005StatutMembreDernière intervention16 février 200915 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
mrous
Messages postés29Date d'inscriptionsamedi 4 octobre 2003StatutMembreDernière intervention28 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).