Meilleur auteur de réponses
Problème MFC / conversion de projet VS2005 -> VS2008

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é
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#- Marqué comme réponse Gilles TOURREAUModerator mercredi 9 juin 2010 21:11
-
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- Proposé comme réponse Acedia mercredi 9 juin 2010 07:53
- Marqué comme réponse Gilles TOURREAUModerator mercredi 9 juin 2010 21:11
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#- Marqué comme réponse Gilles TOURREAUModerator mercredi 9 juin 2010 21:11
-
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.
-
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- Proposé comme réponse Acedia mercredi 9 juin 2010 07:53
- Marqué comme réponse Gilles TOURREAUModerator mercredi 9 juin 2010 21:11
-
-
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 -
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
-
-
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 -
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).