cs_Sunsawe
Messages postés64Date d'inscriptionmardi 21 juin 2005StatutMembreDernière intervention 5 avril 2007
-
4 juil. 2005 à 18:55
cs_Sunsawe
Messages postés64Date d'inscriptionmardi 21 juin 2005StatutMembreDernière intervention 5 avril 2007
-
11 juil. 2005 à 12:05
Bonjour à tous.
Voilà j'ai deux projets en cours dans vc++. Je tente d'utiliser les
classes de l'un dans l'autre. Séparément, les deux projets fonctionnent
très bien. Mais quand je compile avec l'ajout de la classe tout se
passe bien mais à l'execution, j'ai ça:
Debug Assertion Failed
Program:c:\dev\Debug\GraphAp.exe
File:dbgheap.c
Line:1044
Expression:_CrtIsValidHeapPointer(pUserData)
For information on how your program can cause an assertion failure, see the Visual C++ documentation on asserts.
Alors si quelqu'un a une petite idée d'où ça peut venir en général. Un
paramètre mal réglé? une librairie en trop? enfin je sais pas moi
n'importe quoi.
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201013 4 juil. 2005 à 20:27
Difficile d'avoir une idée avec ca, mais si tu en veux une, je dirais
que tu as un pointeur non valide, et que si tu debug, tu pourra trouver
facilement d'ou ca vient (la ligne qui pose problème en tous cas)
cs_Sunsawe
Messages postés64Date d'inscriptionmardi 21 juin 2005StatutMembreDernière intervention 5 avril 2007 4 juil. 2005 à 20:53
Salut je ne sais pas trop me servir du debug mais j'ai quand même
essayé. Il m'indique une ligne dans un fichier que je n'ai moi même pas
crée. Du coup je ne sais pas trop quoi faire. J'essai de vérifier mes
pointeurs. Mais ce que je ne comprends pas, c'est que cette classe dans
un projet fonctionne sans problème et que dans l'autre il y en ait un.
Pourtant c'est le même fichier que j'ai simplement copié.
BunoCS
Messages postés15370Date d'inscriptionlundi 11 juillet 2005StatutModérateurDernière intervention 1 juin 2023102 5 juil. 2005 à 10:17
En mode débug, tu as (généralement en bas de l'écran) une boite de
dialogue qui affiche tous les appels aux fonctions utilisées sous forme
de pile: la ligne du plantage (dbgheap.c) étant le sommet de pile, tu
trouveras ton code en-dessous, et tu remontera donc à ta fonction qui a
induit ce plantage....
Buno
----------------------------------------
L'urgent est fait, l'impossible est en train de se faire. Pour les miracles, prévoir un délai...
cs_Sunsawe
Messages postés64Date d'inscriptionmardi 21 juin 2005StatutMembreDernière intervention 5 avril 2007 6 juil. 2005 à 15:35
bruno: J'ai suivi ce que tu m'indiques mais il ne me renvoit jamais sur
un des mes fichiers. Du coup je ne sais pas du tout d'où ça vient.
Nono: J'importe juste une classe pas un exe, ni un projet en entier. Et
comme j'ai dit la classe ne pose aucun problème dans son projet
d'origine mais dans l'autre ça me donne l'erreur.
D'autres idées parce que là j'en suis à m'arracher les cheveux.
cs_Sunsawe
Messages postés64Date d'inscriptionmardi 21 juin 2005StatutMembreDernière intervention 5 avril 2007 6 juil. 2005 à 15:56
Le pire dans cette histoire c'est que je ne déclare même pas un objet de la classe.
Je ne fais qu'inclure le .h dans l'autre projet et rajouter les
fichiers et c'est tout. ça compile mais ça foire au lancement. et c'est
ce que je ne comprend pas.
Comment peut elle causer une erreur ici alors qu'il n'y a même pas
d'objet déclaré et ne pas en causer dans un autre projet qui est basé
dessus (donc avec plein d'objets de cette classe dedans!!)??????
magic_Nono
Messages postés1878Date d'inscriptionjeudi 16 octobre 2003StatutMembreDernière intervention16 mars 2011 6 juil. 2005 à 16:25
test à faire pour voir si tu n'as pas de pb de recouvrement
met l'ensemble de tes trucs communs dans un espace de nom
(namespace)
ça peut etre une idée...
sinon, je fais ça sans arret d'utiliser des fichiers sources identiques
pour plusieurs fichiers (les Bxxx pour ceux qui en ont déjà entendu
parler ;) )
cs_Sunsawe
Messages postés64Date d'inscriptionmardi 21 juin 2005StatutMembreDernière intervention 5 avril 2007 7 juil. 2005 à 11:07
Nono j'aimerai bien tester ta solution mais je ne sais pas trop comment faire.
Par contre des fois le compilateur m'envoie un warning avec indiquant
un conflit possible avec une librairie et me conseille d'utiliser
/NODEFAULTLIB je ne dois pas bien le placer ce truc parce que le
warning reste.
Si quelqu'un peut me dire exactement où le mettre.
cs_Sunsawe
Messages postés64Date d'inscriptionmardi 21 juin 2005StatutMembreDernière intervention 5 avril 2007 7 juil. 2005 à 14:26
Je viens de constater quelque chose, j'ai essayé d'inclue une autre
classe mais semblable à la mienne. Je l'ai récupéré sur le site. Et
bien j'obtiens exactement la même erreur comme si c'était indépendant
de la classe en fait.
Donc je me demande quel est le mécanisme qui révèle une erreur en incluant une classe au projet?
Voilà l'INTéGRALITé du code du projet. Qui se compile et se lance.
(y'a rien qui s'affiche mais le processus est visible dans le
gestionnaire).
Et dès que je rajoute le .h et le .cpp d'une classe quelconque dans
les dossiers du projet j'ibtiens la superbe erreur décrite plus haut.
Je ne fais rien de plus, juste les ajouter dans les dossiers.
Alors franchement il faudrait que quelqu'un m'explique svp.
De plus que je rajoute /NODEFAULTLIB ou /NODEFAULTLIB:library dans
les options du preprocesseur, j'ai toujours ce warning quand je compile
avec les fichiers de l'autre classe rajoutés:
Code:, ----
LINK : warning LNK4098: defaultlib "MSVCRT" conflicts with use of other libs; use /NODEFAULTLIB:library