IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

MFC Discussion :

[VC6 et MFC] Exception dans MFC42D.dll


Sujet :

MFC

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre confirm� Avatar de Philippe320
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    179
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 179
    Par d�faut [VC6 et MFC] Exception dans MFC42D.dll
    Bonjour � tous,

    mon projet fonctionne parfaitement en Release
    en revanche, en Debug, j'ai l'erreur suivante :
    "Unhandled exception in Gavroche.exe (MFC42D.DLL): 0xC0000005: Access Violation"

    puis VC6 me pr�sente l'�cran suivant
    http://cjoint.com/?mjkOG0Efeo

    Pourquoi ai-je l'erreur uniquement en Debug ?
    Pourquoi une r�f�rence � MFC42D alors qu'on en est � une version bien post�rieure il me semble (7.0 non ?) ?
    Et comment corriger �a ?

    Merci d'avance
    Philippe

  2. #2
    R�dacteur
    Avatar de farscape
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par d�faut
    salut,regarde la valeur de this dans ton debug et
    lit ce post dans la faq:
    http://c.developpez.com/faq/vc/?page...gPointeurValue

  3. #3
    Membre confirm� Avatar de Philippe320
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    179
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 179
    Par d�faut
    bonjour,

    l'erreur se produit dans l'InitInstance de ma classe CWinAPP

    this a une valeur "normale" 0x00424C70
    en revanche, m_pMainWnd (ou AfxGetMainWnd() ) sont � 0 !
    donc l'instruction
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    	m_pMainWnd->SetIcon( ::LoadIcon(m_hInstance,MAKEINTRESOURCE(IDI_ICONE_GAVROCHE)),TRUE);
    plante et provoque l'exception.

    Or le code le InitInstance est celui d'origine (cr�� par Wizard ...) et fonctionne en Release

    Comprends p�
    Philippe

  4. #4
    R�dacteur
    Avatar de farscape
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par d�faut
    tu peux montrer le context d'appel de cette ligne dans initinstance.
    apparemment ton appel est trop tot ...
    note dans ton image this c'etait 0xCDCDCD

  5. #5
    Membre confirm� Avatar de Philippe320
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    179
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 179
    Par d�faut
    tu as raison Farscape
    je reprends :
    ma toute premi�re exception intervient sur
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
     
    	// Dispatch commands specified on the command line
    	if (!ProcessShellCommand(cmdInfo))
    		return FALSE;
    qui donne effectivement this=0xcdcdcdcd

    En supprimant le traitement de la ligne de commande (dont je n'ai pas besoin pour l'instant), l'exception intervient � la ligne suivante
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    	m_pMainWnd->SetIcon( ::LoadIcon(m_hInstance,MAKEINTRESOURCE(IDI_ICONE_GAVROCHE)),TRUE);
    avec l� this "correct" mais m_pMainWnd � 0

    Voil� pour �tre clair.

    Le contexte d'appel est issu de Project Wizard :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
     
    BOOL CGavrocheApp::InitInstance() {
    	// Standard initialization
    	// If you are not using these features and wish to reduce the size
    	//  of your final executable, you should remove from the following
    	//  the specific initialization routines you do not need.
     
    #ifdef _AFXDLL
    	Enable3dControls();			// Call this when using MFC in a shared DLL
    #else
    	Enable3dControlsStatic();	// Call this when linking to MFC statically
    #endif
     
    	// Change the registry key under which our settings are stored.
    	// TODO: You should modify this string to be something appropriate
    	// such as the name of your company or organization.
    	SetRegistryKey(_T("Local AppWizard-Generated Applications"));
     
    	LoadStdProfileSettings(3);  // Load standard INI file options (including MRU)
     
    	// Register the application's document templates.  Document templates
    	//  serve as the connection between documents, frame windows and views.
     
    	CSingleDocTemplate* pDocTemplate;
    	pDocTemplate = new CSingleDocTemplate(
    		IDR_MAINFRAME,
    		RUNTIME_CLASS(CGavrocheDoc),
    		RUNTIME_CLASS(CMainFrame),       // main SDI frame window
    		RUNTIME_CLASS(CGavrocheVue));
     
     
    	AddDocTemplate(pDocTemplate);
     
    	// Parse command line for standard shell commands, DDE, file open
    	CCommandLineInfo cmdInfo;
    	ParseCommandLine(cmdInfo);
     
    	// Dispatch commands specified on the command line
    	if (!ProcessShellCommand(cmdInfo))
    		return FALSE;
     
    	pMainWindow =static_cast<CMainFrame *>(AfxGetMainWnd());
     
    		// The one and only window has been initialized, so show and update it.
     
    	m_pMainWnd->SetIcon( ::LoadIcon(m_hInstance,MAKEINTRESOURCE(IDI_ICONE_GAVROCHE)),TRUE);
    	m_pMainWnd->ShowWindow(SW_SHOWMAXIMIZED);
    	m_pMainWnd->UpdateWindow();
     
     
    	// initialize gdi+
    	Gdiplus::GdiplusStartupInput gdiplusStartupInput;
    	Gdiplus::GdiplusStartup(&m_ulGdiplusToken, &gdiplusStartupInput, NULL);
     
    	hwnd=(HWND)::GetActiveWindow();
        menu=(HMENU)::GetMenu(hwnd);
     
    return TRUE;
    } //proc
    Tu parlais d'appel trop t�t
    Mais en Release �a fonctionne (et en plus �a vient du Wizard, sans modif)

    Merci de ton aide
    Philippe

  6. #6
    R�dacteur
    Avatar de farscape
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par d�faut
    en fait la on regarde l'effet pas la cause ...
    il y a un probleme dans ProcessShellCommand qui fait que la mainframe n'est pas cr��e d'ou le pointeur null apres...
    donc il faudrait regarder d'un plus pres l'assertion d'erreur provoqu�e dans
    ProcessShellCommand.
    par exemple �a peut etre du a un controle dans ta view .
    essaye de mettre un point d'arret dans son constructeur et dans OnInitialUpdate.tu y passe ?


  7. #7
    Membre confirm� Avatar de Philippe320
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    179
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 179
    Par d�faut
    j'ai trouv�, je t'en parle tout � l'heure ....

  8. #8
    Membre confirm� Avatar de Philippe320
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    179
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 179
    Par d�faut
    Bon en fait, tu m'as bien aiguill� :
    dans le constructeur de ma view, j'avais
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
     
    //Chargement de l'image de fond
    Bitmap.LoadBitmap(IDB_BITMAP2); // lecture bitmap dans les ressources
    Bitmap.GetBitmap(&InfosBmp);
    MemDC.CreateCompatibleDC(pDC);// creation d'un DC en memoire
    MemDC.SelectObject(&Bitmap); // selection du bitmap dans le DC en memoire
    je ne sais pas pourquoi, mais c'est �a qui plante en Debug (et pas en Release, �a j'aimerais bien comprendre)

    C'est sans doute trop t�t
    j'essaierai de le mettre dans le InitialUpdate par exemple

    Merci
    Philippe
    (au fait, as-tu re�u mon email sur la fonction Rechercher ?)

  9. #9
    R�dacteur
    Avatar de farscape
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par d�faut
    c'est la cr�ation des dc dans le constructeur qui cause un probleme.
    (mail ?,mp oui mais pas eu trop le temps de repondre lol )

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Exception dans kernel32.dll qui freeze mon programme
    Par Chekov dans le forum G�n�ral Dotnet
    R�ponses: 1
    Dernier message: 30/03/2009, 13h59
  2. Int�gration d'une application MFC MDI dans une DLL
    Par AYARA Adel dans le forum MFC
    R�ponses: 3
    Dernier message: 03/03/2008, 20h11
  3. Creation d'un message dans une dll non MFC
    Par dug dans le forum Windows
    R�ponses: 1
    Dernier message: 29/11/2005, 12h50
  4. [MFC][DLL]Dialog Avec ActiveX dans une DLL ?
    Par matazz dans le forum MFC
    R�ponses: 1
    Dernier message: 16/05/2005, 16h36
  5. gestionnaire d'Exception dans DLL
    Par pirbd dans le forum Langage
    R�ponses: 2
    Dernier message: 03/03/2005, 18h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo