wxDev.fr, le portail francophone consacré à wxWidgets ! ( The french portal for wxWidgets )  
Esp. membre
Recheche rapide



Recherche avancée
Statistiques
Membres inscrits :2359

Membres en ligne : 0
Invités en ligne : 1

Valid XHTML 1.0 Transitional

Valid CSS2

Menu forum (navigation):
Pages: 1  
 
Accueil » Accueil forums » Développement C/C++
» Erreur lors du lancement de mon appli sous windows XP
Conversation (Résolue) : Erreur lors du lancement de mon appli sous windows XP
07-05-2008 11:35:45  Erreur lors du lancement de mon appli sous windows XP #1
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
07-05-2008 13:14:17  Re: Erreur lors du lancement de mon appli sous windows XP #2
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1383
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à...
07-05-2008 14:21:50  Re: Erreur lors du lancement de mon appli sous windows XP #3
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)

07-05-2008 14:40:19  Re: Erreur lors du lancement de mon appli sous windows XP #4
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1383
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à...
07-05-2008 14:55:14  Re: Erreur lors du lancement de mon appli sous windows XP #5
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!!
Menu forum (navigation):
Pages: 1  
 
Accueil » Accueil forums » Développement C/C++
» Erreur lors du lancement de mon appli sous windows XP