cs_mamag
Messages postés48Date d'inscriptionvendredi 10 juin 2005StatutMembreDernière intervention 6 octobre 2005
-
6 sept. 2005 à 09:45
DeAtHCrAsH
Messages postés2670Date d'inscriptionvendredi 25 janvier 2002StatutMembreDernière intervention 6 février 2013
-
6 sept. 2005 à 12:39
Bonjour,
j'ai crée une DLL sous VC++ à l'aide de la librairie ADO, pour la tester j'ai créé un programme en c++ qui l'utilise, mais en mode debug, j'ai une erreur.
"error=unhandled exception in .exe: OxCOOOOOO5: Acces Violation"
je ne vois pas pourquoi j'ai cette erreur! et surtout à quoi elle correspond!
qd mon programme plante, voilà où le debugger m'emmène:
dans le fichier c:\...\VC98\include\comip.h
et voilà ou il pointe:
// AddRefs only if the interface is not NULL
//
void _AddRef() throw()
{
if (m_pInterface != NULL) {
m_pInterface->AddRef(); // il pointe ici
}
je ne sais pas ce qu'est ce fichier comip.h et surtout d'où vient cette erreur!!!!
j'ai vraiment besoin d'aide car ca fait un moment que je tourne en rond!!!
merci.
DeAtHCrAsH
Messages postés2670Date d'inscriptionvendredi 25 janvier 2002StatutMembreDernière intervention 6 février 2013 6 sept. 2005 à 09:54
Les messages de violaton d'accès viennent le plus souvent de problème de pointeur qui pointe pas au bon endroit.
Le bout de code que tu nous montres gere une exception apparement du fait de la présence du throw.
Revoie ton code a tou les coups c'est toi qui génére l'exception lors d'un appelle.
Teste ton programme en mode Debug et déroule le pas a pas en vérifiant systématiquement les valeurs de tes pointeurs.
cs_mamag
Messages postés48Date d'inscriptionvendredi 10 juin 2005StatutMembreDernière intervention 6 octobre 2005 6 sept. 2005 à 10:13
désolée mais étant débutante, je ne comprends pas ce qu'est la présence du throw.
et que m'apporte la valeur des pointeurs, comment dois je m'en servir.
DeAtHCrAsH
Messages postés2670Date d'inscriptionvendredi 25 janvier 2002StatutMembreDernière intervention 6 février 2013 6 sept. 2005 à 10:19
Un pointeur représente une adresse mémoire qui contient des données.
Seuleument ce pointeur peut correspondre a une adresse ou il n'y a rien, d'ou le plantage des programmes utilisant des pointeurs mal initialisés.
Le throw est une instruction permettant de gérer les exceptions qui peuvent survenir dans un programme, ce qui évite souvent le plantage du programme en question.
Je n'y connais pas grand chose en ADO mais tu peux toujours m'envoyer ton code en zip a shellkode at hotmail.com
Je regarderai ce que je peux faire.
Shell
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_mamag
Messages postés48Date d'inscriptionvendredi 10 juin 2005StatutMembreDernière intervention 6 octobre 2005 6 sept. 2005 à 10:42
ok, ca à l'air de marcher, je n'ai plus de pb d'access violation.
mais le CoInitialize(NULL), je ne dois pas l'utiliser dans ma DLL?, je l'utilise juste dans le main?
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 6 sept. 2005 à 11:17
Il serait cohérent qu'il soit dans la DLL, ça assure sa réusabilité.
Pour autant, si c'est toujours toi qui t'en sers alors no prob si est appelé depuis le prog utilisant la dll du moment que tu assures cet appel, il doit y avoir au moins 1 fois cet appel au niveau du processus.