Plantage inexpliqué dès que je touche à un .h

Plantage inexpliqué dès que je touche à un .h - C++ - Programmation

Marsh Posté le 05-07-2004 à 09:16:33    

Bonjour,
 
je bosse depuis 3 mois sur un gros projet en MFC (commencé par une autre personne l'an dernier), qui comprend un certain nombre de classes et de boîtes de dialogue, et depuis le début je fais face à un problème qui me gêne et dont je n'arrive pas à trouver la cause:
 
Pour certaines des classes, dès que j'ajoute une ligne dans le ".h" (que ce soit une variable ou une fonction), pas de problème de compilation, pas de problème à l'utilisation, MAIS j'ai un message d'erreur lors de l'extinction ("Ce programme a effectué une opération non conforme ..." ). Si je modifie la classe par le biais du classwizard, c'est pareil, donc je me retrouve un peu dans la m**** pour ajouter le moindre "event" à une ComboBox.
 
Alors voilà, d'où peut provenir le problème à votre avis? Je suppose que ça vient d'une histoire de gestion de mémoire, mais je ne comprends pas en quoi le fait de rajouter une variable du style "int toto;" dans un .h fait que le prog plante à l'extinction!?  :sweat:


---------------
J'aime pas Apple...
Reply

Marsh Posté le 05-07-2004 à 09:16:33   

Reply

Marsh Posté le 05-07-2004 à 09:18:43    

Voilà un des .h qui pose problème, au cas où ça peut être utile...
 

Code :
  1. #if !defined(AFX_INFOSMAT_H__B59C8E53_A4FD_4BA1_9F5B_AE88CBDA6418__INCLUDED_)
  2. #define AFX_INFOSMAT_H__B59C8E53_A4FD_4BA1_9F5B_AE88CBDA6418__INCLUDED_
  3. #if _MSC_VER > 1000
  4. #pragma once
  5. #endif // _MSC_VER > 1000
  6. // InfosMat.h : header file
  7. //
  8. /////////////////////////////////////////////////////////////////////////////
  9. // CInfosMat dialog
  10. class CInfosMat : public CDialog
  11. {
  12. // Construction
  13. public:
  14. BOOL charger_quitter;
  15. BOOL enregistrer_fichier();
  16. BOOL charger_fichier();
  17. CInfosMat(CWnd* pParent = NULL);   // standard constructor
  18. // Dialog Data
  19. //{{AFX_DATA(CInfosMat)
  20. enum { IDD = IDD_INFOS_MAT };
  21. CComboBox m_presence_pointe;
  22. CString m_type;
  23. CString m_groupement;
  24. CString m_lieu;
  25. CString m_ville;
  26. CString m_type_montage;
  27. CString m_situation;
  28. CString m_responsable;
  29. CString m_position_porte;
  30. CString m_numero_mat;
  31. CString m_modele_mat;
  32. CString m_mf_maxi;
  33. CString m_element_additionnel;
  34. CString m_constructeur_mat;
  35. CString m_constructeur_lanterne;
  36. CString m_client;
  37. CString m_armoire;
  38. CString m_mat_precedent;
  39. CString m_modele_lanterne;
  40. //}}AFX_DATA
  41. // Overrides
  42. // ClassWizard generated virtual function overrides
  43. //{{AFX_VIRTUAL(CInfosMat)
  44. protected:
  45. virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
  46. //}}AFX_VIRTUAL
  47. // Implementation
  48. protected:
  49. // Generated message map functions
  50. //{{AFX_MSG(CInfosMat)
  51. virtual BOOL OnInitDialog();
  52. virtual void OnOK();
  53. virtual void OnCancel();
  54. //}}AFX_MSG
  55. DECLARE_MESSAGE_MAP()
  56. };
  57. //{{AFX_INSERT_LOCATION}}
  58. // Microsoft Visual C++ will insert additional declarations immediately before the previous line.
  59. #endif // !defined(AFX_INFOSMAT_H__B59C8E53_A4FD_4BA1_9F5B_AE88CBDA6418__INCLUDED_)


Message édité par Alkor2001 le 05-07-2004 à 09:19:48

---------------
J'aime pas Apple...
Reply

Marsh Posté le 05-07-2004 à 09:52:53    

et avec le debugueur ça donne quoi ?

Reply

Marsh Posté le 05-07-2004 à 09:53:49    

Commence par nettoyer les fichiers objets en faisant un Clean ou un RebuildAll, des fois ça aide.
Ensuite, je doute que le problème vienne uniquement du ".h". Lorsque tu ajoutes une déclaration dans le header, en principe elle est accompagnée d'une implémentation dans le ".cpp". A mon avis c'est de ce côté ça cloche.
Il faut que tu t'amuses avec les breakpoints en mode Debug ou que tu lances ton appli avec F5 (menu Build->Start Debug->Go sous VC6) et que tu provoques le plantage pour voir où ça se passe au niveau du code.

Reply

Marsh Posté le 05-07-2004 à 09:59:28    

Ok merci, je vais regarder du côté du debuggeur... (j'avais toujours réussi à y échapper jusque là, du coup je n'y avais même pas pensé  :sweat: )


---------------
J'aime pas Apple...
Reply

Marsh Posté le 05-07-2004 à 10:03:04    

Bon bha merci m0rbac, une fois de plus je vais pouvoir échapper au débuggeur, un simple "Rebuild All" a réglé le problème sur lequel je m'énervais depuis 3 mois...  :jap:  
 
Comme quoi j'ai encore beaucoup de choses à apprendre...  :wahoo:


---------------
J'aime pas Apple...
Reply

Marsh Posté le 05-07-2004 à 10:20:57    

Comme d'utiliser des outils de gestion de projet qui marchent.
 
Visiblement ton IDE ne fait pas le travail correctement, tu pourrais essayer d'utiliser autre chose comme : http://www.scons.org/ par exemple.


Message édité par Kristoph le 05-07-2004 à 10:22:24
Reply

Marsh Posté le 05-07-2004 à 15:05:58    

Kristoph a écrit :

Comme d'utiliser des outils de gestion de projet qui marchent.
 
Visiblement ton IDE ne fait pas le travail correctement, tu pourrais essayer d'utiliser autre chose comme : http://www.scons.org/ par exemple.


s'il utilise Visual C++ 6, c'est normal, c'est une grosse fourmillière à bugs à ce niveau


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 05-07-2004 à 23:06:02    

Alkor2001 a écrit :

Bon bha merci m0rbac, une fois de plus je vais pouvoir échapper au débuggeur, un simple "Rebuild All" a réglé le problème sur lequel je m'énervais depuis 3 mois...  :jap:  
 
Comme quoi j'ai encore beaucoup de choses à apprendre...  :wahoo:


 
En effet, la première étant qu'il faut faire un Rebuild all le plus souvent possible (tous les soirs avant de partir par exemple), et non pas tous les 3 mois.
La deuxième est que le debogueur est ton ami, et non ton ennemi.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed