Membres inscrits :2359
Membres en ligne : 0
Invités en ligne : 2


|
Conversation (Résolue) : Erreur lors du lancement de mon appli sous windows XP |
grabriel (Membre)
Inscrit le : 23-04-2008
Messages: 14
Snippets: 0
Tutoriels: 0
Hors ligne |
Bonjour,
j'ai l'erreur suivante lorsque je lance mon executable :
Process terminated with status -1073741819 (0 minutes, 4 seconds)
J'ai lu que l'erreur provenait d'une mauvaise gestion de la mémoire, ou de déclaration de pointeur 'foireuse'.
Quelles sont les méthodes pour éviter ces problèmes?
Existe-t-il une sorte de "best practice" pour ne pas rencontrer ces erreurs.
Merci
|
|
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1390
Snippets: 25
Tutoriels: 6
Site web
Hors ligne |
Salut.
Il faudrait que tu nous mettes un peu de code, qu'on puisse voir où se situe le problème, car ça peut venir de plein de choses.
@+ Xav'
|
Le nouveau portail wxWidgets francophone : www.wxdev.fr Ben en fait, vous y êtes déjà ... et effectivement, depuis le temps, ce n'est plus tellement nouveau....
|
grabriel (Membre)
Inscrit le : 23-04-2008
Messages: 14
Snippets: 0
Tutoriels: 0
Hors ligne |
J'étais en train de lancer le debuggeur mais je comprends pas grand chose il me renvoie des adresses mémoire mais pas vers le code....
J'ai un main.cpp
Code wxWidgets: #include <stdio.h> #include "mainFrame.hpp" using namespace std; int main(){ MainFrame *frame=new MainFrame(); // On l'affiche frame->Show(); return 0; }
et un mainframe.cpp
Code wxWidgets: #include "mainframe.hpp" #include <wx/gbsizer.h> using namespace std; const int MainFrame::ID_BTN_DEBUT = wxNewId(); const int MainFrame::ID_BTN_RETOUR = wxNewId(); const int MainFrame::ID_BTN_PAUSE = wxNewId(); const int MainFrame::ID_BTN_LECTURE = wxNewId(); const int MainFrame::ID_BTN_AVANCE = wxNewId(); const int MainFrame::ID_BTN_FIN = wxNewId(); BEGIN_EVENT_TABLE(MainFrame,wxFrame) EVT_BUTTON(ID_BTN_DEBUT,MainFrame::OnButtonDebutClicked) EVT_BUTTON(ID_BTN_RETOUR,MainFrame::OnButtonRetourClicked) EVT_BUTTON(ID_BTN_PAUSE,MainFrame::OnButtonPauseClicked) EVT_BUTTON(ID_BTN_LECTURE,MainFrame::OnButtonLectureClicked) EVT_BUTTON(ID_BTN_AVANCE,MainFrame::OnButtonAvanceClicked) EVT_BUTTON(ID_BTN_FIN,MainFrame::OnButtonFinClicked) END_EVENT_TABLE() MainFrame::MainFrame() : wxFrame(NULL,wxID_ANY,_("MagCenter")) { //gestion de l'i18n wxLocale::AddCatalogLookupPathPrefix(wxT("resources")); m_Locale = new wxLocale(wxLANGUAGE_DEFAULT); m_Locale->AddCatalog(m_lang); SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_BTNFACE)); //création du sizer wxBoxSizer *mainSizer = new wxBoxSizer(wxHORIZONTAL); //création des boutons btnDebut = new wxButton(this,ID_BTN_DEBUT,_T("|<"),wxDefaultPosition,wxSize(30,-1)); btnRetour = new wxButton(this,ID_BTN_RETOUR,_T("<<"),wxDefaultPosition,wxSize(30,-1)); btnPause = new wxButton(this,ID_BTN_PAUSE,_T("||"),wxDefaultPosition,wxSize(30,-1)); btnLecture = new wxButton(this,ID_BTN_LECTURE,_T(">"),wxDefaultPosition,wxSize(30,-1)); btnAvance = new wxButton(this,ID_BTN_AVANCE,_T(">>"),wxDefaultPosition,wxSize(30,-1)); btnFin = new wxButton(this,ID_BTN_FIN,_T(">|"),wxDefaultPosition,wxSize(30,-1)); //rajoute les boutons au sizer mainSizer->Add(btnDebut,1,wxALL,5); mainSizer->Add(btnRetour,1,wxALL,5); mainSizer->Add(btnPause,1,wxALL,5); mainSizer->Add(btnAvance,1,wxALL,5); mainSizer->Add(btnFin,1,wxALL,5); //mise en forme de la fenêtre SetSize(8,8,370,150); } //Fonction de clique sur les boutons void MainFrame::OnButtonDebutClicked(wxCommandEvent &event){ wxMessageBox(_T("Appel de la méthode 'OnButtonDebutClicked'")); } void MainFrame::OnButtonRetourClicked(wxCommandEvent &event){ wxMessageBox(_T("Appel de la méthode 'OnButtonRetourClicked'")); } void MainFrame::OnButtonPauseClicked(wxCommandEvent &event){ wxMessageBox(_T("Appel de la méthode 'OnButtonPauseClicked'")); } void MainFrame::OnButtonLectureClicked(wxCommandEvent &event){ wxMessageBox(_T("Appel de la méthode 'OnButtonLectureClicked'")); } void MainFrame::OnButtonAvanceClicked(wxCommandEvent &event){ wxMessageBox(_T("Appel de la méthode 'OnButtonAvanceClicked'")); } void MainFrame::OnButtonFinClicked(wxCommandEvent &event){ wxMessageBox(_T("Appel de la méthode 'OnButtonFinClicked'")); } MainFrame::~MainFrame() { delete[] m_Locale; }
et mon header
Code wxWidgets: #ifndef MAINFRAME_H #define MAINFRAME_H #include <wx/wx.h> //header pour l'i18n #include <wx/intl.h> class MainFrame : public wxFrame { public: MainFrame(); ~MainFrame(); private: void OnButtonDebutClicked(wxCommandEvent &event); void OnButtonRetourClicked(wxCommandEvent &event); void OnButtonPauseClicked(wxCommandEvent &event); void OnButtonLectureClicked(wxCommandEvent &event); void OnButtonAvanceClicked(wxCommandEvent &event); void OnButtonFinClicked(wxCommandEvent &event); //i18n wxString m_lang; wxLocale *m_Locale; //Boutons wxButton *btnDebut, *btnRetour, *btnPause, *btnLecture, *btnAvance, *btnFin; static const int ID_BTN_DEBUT, ID_BTN_RETOUR, ID_BTN_PAUSE, ID_BTN_LECTURE, ID_BTN_AVANCE, ID_BTN_FIN; DECLARE_EVENT_TABLE(); }; #endif
Je me suis "légèrement" inspiré du tuto filefinder. (le bug en plus)
Pour l'instant j'ai pas grand chose mais avant que je rajoute les boutons j'avais déjà l'erreur.
Dernière modification par grabriel (07-05-2008 14:22:47)
|
|
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1390
Snippets: 25
Tutoriels: 6
Site web
Hors ligne |
Salut.
Le problème vient du fait que tu as laissé le "main" d'une application standard.
Une application wxWidgets ne contient pas de foncion "main" (du moins, pas explicitement). En fait, il faut créer une classe dérivée de wxApp, contenant au minimum la surcharge de la méthode "OnInit". Il faut ensuite ajouter la macro IMPLEMENT_APP(MyApp) et c'est cette macro qui se charge d'écrire la fonction main au moment de la compilation.
Le code de ton fichier "main.cpp" devrait donc ressembler à celui-ci :
Code wxWidgets: #include <wx/wx.h> #include "mainFrame.hpp" class MyApp : public wxApp { public: virtual bool OnInit(); }; bool MyApp::OnInit() { MainFrame *frame=new MainFrame(); // On l'affiche frame->Show(); return true; } IMPLEMENT_APP(MyApp);
Je te conseille de relire (correctement ) les premières pages du tuto : ça sera mieux expliqué (j'ai un peu condensé le code ici).
@+ Xav'
|
Le nouveau portail wxWidgets francophone : www.wxdev.fr Ben en fait, vous y êtes déjà ... et effectivement, depuis le temps, ce n'est plus tellement nouveau....
|
grabriel (Membre)
Inscrit le : 23-04-2008
Messages: 14
Snippets: 0
Tutoriels: 0
Hors ligne |
Nickel!
J'avais zappé un peu le fichier main je cherchais plus dans le fichier mainFrame.
Merci beaucoup!!
|
|
|