2010-12-10 84 views
1

J'ai créé une application MFC en utilisant Visual   Studio   2008 qui fonctionne correctement sous Windows   XP. Mais lorsque je tente d'exécuter le même fichier EXE dans Windows Vista Je reçois:Erreur: "L'application n'a pas pu démarrer car sa configuration côte-à-côte est incorrecte"

Error: Application has failed to start because its side-by-side configuration is incorrect

Quand je vérifie l'observateur d'événements alors ci-dessous est ce qu'il dit:

Log Name:  Application 
Source:  SideBySide 
Date:   12/10/2010 10:06:08 AM 
Event ID:  33 
Task Category: None 
Level:   Error 
Keywords:  Classic 
User:   N/A 
Computer:  WIN-8A4INI0BH2R 
Description: 
Activation context generation failed for "C:\MyApp.exe". Dependent Assembly Microsoft.VC90.CRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="9.0.21022.8" could not be found. Please use sxstrace.exe for detailed diagnosis. 
Event Xml: 
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event"> 
    <System> 
    <Provider Name="SideBySide" /> 
    <EventID Qualifiers="49409">33</EventID> 
    <Level>2</Level> 
    <Task>0</Task> 
    <Keywords>0x80000000000000</Keywords> 
    <TimeCreated SystemTime="2010-12-10T04:36:08.000Z" /> 
    <EventRecordID>181</EventRecordID> 
    <Channel>Application</Channel> 
    <Computer>WIN-8A4INI0BH2R</Computer> 
    <Security /> 
    </System> 
    <EventData> 
    <Data>Microsoft.VC90.CRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="9.0.21022.8"</Data> 
    <Data> 
    </Data> 
    <Data> 

    </Data> 
    <Data>C:\MyApp.exe</Data> 
    <Data> 
    </Data> 

    <Data> 
    </Data> 
    </EventData> 
</Event> 
+1

Avez-vous installé le VC90 CRT correct sur la machine Vista? –

+0

@ James McNellis, Non. Est-ce que cela signifie que l'utilisateur doit également installer VC90 CRT sur sa machine Vista pour exécuter mon application? – Simsons

+3

Oui ............ –

Répondre

7

Vous avez pas DLL d'exécution CRT sur la machine cible. Pour éviter cela, vous pouvez installer des redistribuables VC9 ou vous pouvez lier votre programme avec le runtime statiquement (more info). This question pourrait être utile aussi.

+0

Vous pouvez également utiliser des assemblages privés, par ex. sous votre répertoire d'application il peut y avoir un répertoire appelé "Microsoft.VC90.CRT" contenant les DLL d'exécution. L'application les trouvera automatiquement. Ceci est très utile si l'application doit être distribuée sans que les autorisations d'installation soient disponibles et qu'elle enregistre l'installation de l'ensemble du CRT. Voir http://stackoverflow.com/questions/787216. – chrism1

+0

Pour résoudre les problèmes avec les assemblées privées, lisez cet excellent article - http://buffered.io/posts/resolving-side-by-side-configuration-issues/ – TheJosh