none
Problème MFC / conversion de projet VS2005 -> VS2008 RRS feed

  • Question

  •  

    Bonjour,

     

    Je travaille sur Windows XP Pro (SP3) with Visual Studio 9.0.30729.1 SP.

     J'ai actuellement 2 projet créés sous des versions antérieurs de Visual Studio.

     Le premier a été créé sous Visual Studio 7 ; après la conversion automatique en projet Visual Studio 9, j'ai simplement ajouté ces lignes au fichier stdafx.h du projet pour spécifier que je travaille sur une plateforme XP :

     

    #ifndef WINVER        

    #define WINVER 0x0501

    #endif

     

    #ifndef _WIN32_WINNT            

    #define _WIN32_WINNT 0x0501    

    #endif

     

    Tout se passe bien a la compilation et je peux récupérer la dll créée par ce projet pour l'utiliser dans le second projet.

     

     

     

     

    Le second projet est un projet Visual Studio 8 qui est une application MFC ; la conversion en projet Visual Studio 9 se passe à nouveau sans problèmes, la compilation se déroule bien, mais lorsque je lance le débuggage (ou même sans passer par Visual et en lancant l'execution à la main) ce message d'erreur apparait :

     

    « Cette application n’a pas pu démarrer car mfc90d.dll est introuvable. »

     

     

    J'ai essayé de compiler/executer ce même projet sur différentes plateforme XP+VS2008 et le problème est exactement le même partout. Par contre l'execution du programme se déroule sans problèmes sur les ordinateurs munis de Vista+VS2008.

     

     

    Voici le compte rendu de l'execution en débug du programme :

     

    'ACS.exe' : Chargé 'C:\Documents and Settings\Administrateur\Bureau\Logiciel ACS\Debug\ACS.exe', Les symboles ont été chargés.

    'ACS.exe' : Chargé 'C:\WINDOWS\system32\ntdll.dll'

    'ACS.exe' : Chargé 'C:\WINDOWS\system32\kernel32.dll'

    'ACS.exe' : Chargé 'C:\WINDOWS\system32\opengl32.dll'

    'ACS.exe' : Chargé 'C:\WINDOWS\system32\msvcrt.dll'

    'ACS.exe' : Chargé 'C:\WINDOWS\system32\advapi32.dll'

    'ACS.exe' : Chargé 'C:\WINDOWS\system32\rpcrt4.dll'

    'ACS.exe' : Chargé 'C:\WINDOWS\system32\secur32.dll'

    'ACS.exe' : Chargé 'C:\WINDOWS\system32\gdi32.dll'

    'ACS.exe' : Chargé 'C:\WINDOWS\system32\user32.dll'

    'ACS.exe' : Chargé 'C:\WINDOWS\system32\glu32.dll'

    'ACS.exe' : Chargé 'C:\WINDOWS\system32\ddraw.dll'

    'ACS.exe' : Chargé 'C:\WINDOWS\system32\dciman32.dll'

    'ACS.exe' : Chargé 'C:\WINDOWS\system32\avifil32.dll'

    'ACS.exe' : Chargé 'C:\WINDOWS\system32\winmm.dll'

    'ACS.exe' : Chargé 'C:\WINDOWS\system32\ole32.dll'

    'ACS.exe' : Chargé 'C:\WINDOWS\system32\msacm32.dll'

    'ACS.exe' : Chargé 'C:\WINDOWS\system32\msvfw32.dll'

    'ACS.exe' : Chargé 'C:\WINDOWS\system32\shell32.dll'

    'ACS.exe' : Chargé 'C:\WINDOWS\system32\shlwapi.dll'

    'ACS.exe' : Chargé 'C:\WINDOWS\system32\comctl32.dll'

    'ACS.exe' : Chargé 'C:\Documents and Settings\Administrateur\Bureau\Logiciel ACS\Debug\GswN.dll', Les symboles ont été chargés.

    'ACS.exe' : Chargé 'C:\WINDOWS\WinSxS\x86_Microsoft.VC90.DebugMFC_1fc8b3b9a1e18e3b_9.0.30729.1_x-ww_c94a3a24\mfc90d.dll', Les symboles ont été chargés.

    'ACS.exe' : Chargé 'C:\WINDOWS\WinSxS\x86_Microsoft.VC90.DebugCRT_1fc8b3b9a1e18e3b_9.0.30729.1_x-ww_f863c71f\msvcr90d.dll', Les symboles ont été chargés.

    'ACS.exe' : Chargé 'C:\WINDOWS\system32\msimg32.dll'

    'ACS.exe' : Chargé 'C:\WINDOWS\WinSxS\x86_Microsoft.VC90.DebugCRT_1fc8b3b9a1e18e3b_9.0.30729.1_x-ww_f863c71f\msvcp90d.dll', Les symboles ont été chargés.

    'ACS.exe' : Chargé 'C:\WINDOWS\system32\oleaut32.dll'

    'ACS.exe' : Chargé 'C:\Program Files\SuperCopier2\SC2Hook.dll', Le fichier binaire n'a pas été généré avec les informations de débogage.

    'ACS.exe' : Chargé 'C:\WINDOWS\system32\imm32.dll'

    'ACS.exe' : Chargé 'C:\WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.2600.5512_x-ww_35d4ce83\comctl32.dll'

    'ACS.exe' : Chargé 'C:\WINDOWS\system32\uxtheme.dll'

    'ACS.exe' : Chargé 'C:\WINDOWS\WinSxS\x86_Microsoft.VC90.MFCLOC_1fc8b3b9a1e18e3b_9.0.30729.1_x-ww_b0db7d03\mfc90fra.dll', Le fichier binaire n'a pas été généré avec les informations de débogage.

    Débogueur:: Une exception STATUS_DLL_NOT_FOUND non gérée et qui ne peut être continuée a été levée durant le chargement du processus

    Le programme '[700] ACS.exe: Natif' s'est arrêté avec le code -1073741515 (0xc0000135).

     

     

     

    Il me semble que le problème pourrait venir du fait que Visual utiliserait une référence de DLL MFC différente à la compilation de celle utilisée par défaut pour XP pour lancer les programmes.

     

    Comment puis-je régler ce problème ?

    Cordialement,

    Thierry Augé

    vendredi 16 janvier 2009 08:43

Réponses

Toutes les réponses

  • Bonjour,

    Je ne suis pas sur de mon coup, mais il faut installer les runtime de C++ 2008 sur la machine qui pose problème :
    http://www.microsoft.com/downloads/details.aspx?familyid=A5C84275-3B97-4AB7-A40D-3802B2AF5FC2&displaylang=en

    Cordialement
    Gilles TOURREAU - MVP C#
    lundi 20 avril 2009 20:32
    Modérateur
  • Bonjour,

     

    Je remonte ce post car j'ai exactement le même problème. Tout ce passe bien si je compile avec les mfc en statique, mais il me demande le mfc90d dll lorsque j'essaie de lancer l'application compilée avec les mfc en mode partagé. La solution d'utiliser les redist du message ci dessus ne vaut que pour des compilations en mode release: les dll debug ne sont pas "distributable".

    Si quelqu'un avait une solution à ce problème, je lui serai reconnaissant.

    Merci.

    jeudi 3 juin 2010 09:32
  • Bonjour,

    Pour installer les DLL de débogage, vous devez installer Visual C++ sur le poste de production...

    Cordialement


    Gilles TOURREAU - MVP C# - MCP - Architecte .NET/Consultant/Formateur - http://gilles.tourreau.fr
    jeudi 3 juin 2010 19:25
    Modérateur
  •   Bonjour,

     

    Non, je suis sur un poste de développement, il n'y a donc pas de problème avec l'installation de visual studio.

     

    J'étais passé sur un autre projet, mais j'y reviens, et je n'ai toujours pas trouvé de solution...

    lundi 12 juillet 2010 12:33
  • Bonjour,

    Quelle version de Visual Studio avez vous installé ?

    Cordialement


    Gilles TOURREAU - MVP C# - MCTS Windows Forms - Architecte .NET/Consultant/Formateur - http://gilles.tourreau.fr
    lundi 12 juillet 2010 12:37
    Modérateur
  • Ce sont des projets qui étaient initialement en VS2003 et qui ont été migrés en VS2008 SP1.

     

    Je suis en train de rechercher du côté des manifestes pour l'instant.

     

    C'est tout de même étrange, car sur les deux projets, un seul a cette erreur, et les options sont strictement identiques...

     

    Merci

     

    COrdialemen t

    lundi 12 juillet 2010 12:52
  • Et c'est d'autant plus étrange que lors de l'édition de liens, il y a bien:

     Chargé 'C:\WINDOWS\WinSxS\x86_Microsoft.VC90.DebugMFC_1fc8b3b9a1e18e3b_9.0.30729.1_x-ww_c94a3a24\mfc90d.dll'

    lundi 12 juillet 2010 12:55
  • Bonjour,

    Quel est le message d'erreur qui s'affiche exactement ?

    Cordialement


    Gilles TOURREAU - MVP C# - MCTS Windows Forms - Architecte .NET/Consultant/Formateur - http://gilles.tourreau.fr
    lundi 12 juillet 2010 13:04
    Modérateur
  • Dans un afxmessageBox: "Cette application n'a pas pu démarrer car mfc90d.dll est introuvable. La réinstallation de cette application peut corriger le problème".

     

    Et après l'arrêt de l'application, j'ai dans la fenêtre de sortie:

    'GeodSess-d.exe' : Chargé 'G:\projets\XXX-d.exe'
    'GeodSess-d.exe' : Chargé 'C:\WINDOWS\system32\ntdll.dll'
    'GeodSess-d.exe' : Chargé 'C:\WINDOWS\system32\kernel32.dll'
    'GeodSess-d.exe' : Chargé 'G:\projets\XXXX.dll'
    'GeodSess-d.exe' : Chargé 'G:\projets\XXX.dll'
    'GeodSess-d.exe' : Chargé 'C:\WINDOWS\WinSxS\x86_Microsoft.VC90.DebugMFC_1fc8b3b9a1e18e3b_9.0.30729.1_x-ww_c94a3a24\mfc90d.dll'
    'GeodSess-d.exe' : Chargé 'C:\WINDOWS\WinSxS\x86_Microsoft.VC90.DebugCRT_1fc8b3b9a1e18e3b_9.0.30729.1_x-ww_f863c71f\msvcr90d.dll'
    'GeodSess-d.exe' : Chargé 'C:\WINDOWS\system32\user32.dll'
    'GeodSess-d.exe' : Chargé 'C:\WINDOWS\system32\gdi32.dll'
    'GeodSess-d.exe' : Chargé 'C:\WINDOWS\system32\shlwapi.dll'
    'GeodSess-d.exe' : Chargé 'C:\WINDOWS\system32\advapi32.dll'
    'GeodSess-d.exe' : Chargé 'C:\WINDOWS\system32\rpcrt4.dll'
    'GeodSess-d.exe' : Chargé 'C:\WINDOWS\system32\secur32.dll'
    'GeodSess-d.exe' : Chargé 'C:\WINDOWS\system32\msvcrt.dll'
    'GeodSess-d.exe' : Chargé 'C:\WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.2600.5512_x-ww_35d4ce83\comctl32.dll'
    'GeodSess-d.exe' : Chargé 'C:\WINDOWS\system32\msimg32.dll'
    'GeodSess-d.exe' : Chargé 'C:\WINDOWS\system32\ole32.dll'
    'GeodSess-d.exe' : Chargé 'C:\WINDOWS\system32\oleaut32.dll'
    'GeodSess-d.exe' : Chargé 'C:\WINDOWS\WinSxS\x86_Microsoft.VC90.DebugCRT_1fc8b3b9a1e18e3b_9.0.30729.1_x-ww_f863c71f\msvcp90d.dll'
    Débogueur:: Une exception STATUS_DLL_NOT_FOUND non gérée et qui ne peut être continuée a été levée durant le chargement du processus
    Le programme '[8532] XXX-d.exe: Natif' s'est arrêté avec le code -1073741515 (0xc0000135).

    lundi 12 juillet 2010 13:22