2008-09-17 8 views
2

Après avoir compilé un projet C++ simple à l'aide de Visual Studio 2008 sur Vista, tout fonctionne correctement sur la machine Vista originale et les autres ordinateurs Vista. Toutefois, le déplacer vers une boîte XP entraîne un message d'erreur: "L'application n'a pas pu démarrer car la configuration de l'application est incorrecte".Différentes versions de bibliothèques C++

Que dois-je faire pour que mon EXE compilé fonctionne sur XP et Vista? J'ai eu ce même problème il y a quelques mois, et le simple fait de jouer avec certains paramètres du projet l'a corrigé, mais je ne me souviens plus lesquels j'ai changé.

Répondre

6

Vous devez installer le moteur d'exécution de Visual Studio 2008 sur l'ordinateur cible:

http://www.microsoft.com/downloads/details.aspx?FamilyID=9b2da534-3e03-4391-8a4d-074b9f2bc1bf&displaylang=en

Sinon, vous pouvez également lier le temps de fonctionnement statique, dans les propriétés du projet fenêtre aller à:

C++ -> génération de code -> Runtime Library et sélectionnez " /MT multi-thread"

+0

Merci cette option est ce que je cherchais. – user16773

1

Vous devez installer les fichiers redistribuables d'exécution sur l'ordinateur sur lequel vous essayez d'exécuter l'application.

Le redistribuable pour 2008 est here.

Le redistribuable pour 2005 est here.

Ils peuvent être installés côte à côte, au cas où vous auriez besoin des deux.

+0

Oui, mais je préfère ne pas avoir à faire les utilisateurs le faire. Est-il impossible de compiler avec des bibliothèques plus anciennes? – user16773

1

Vous avez probablement besoin de distribuer l'environnement d'exécution VC avec votre application. Il existe plusieurs façons de le faire. This article de l'équipe Visual C++ Microsoft explique le mieux les différentes façons de distribuer ces dépendances si vous utilisez Visual Studio 2005 ou 2008.

Comme il est indiqué dans l'article, mais vous pouvez télécharger le package d'installation redistribuable et lancer simplement que sur la machine client, ce n'est presque toujours pas l'option optimale. Il existe généralement de meilleurs moyens d'inclure les DLL requises, telles que l'inclusion du module de fusion si vous distribuez via le programme d'installation de Windows ou la copie App-Local si vous souhaitez simplement distribuer un dossier compressé.

Une autre option consiste à lier statiquement les bibliothèques d'exécution, au lieu de les distribuer avec votre application. Cette option est uniquement adaptée aux fichiers EXE autonomes qui ne chargent pas d'autres DLL. Vous ne pouvez également pas faire cela avec des DLL qui sont chargées par d'autres applications.

0

Il est beaucoup plus simple de lier statiquement le temps d'exécution.

C++ -> Génération de code -> Runtime Library et sélectionnez "/ MT multi-thread"

Cependant, cela ne rend votre exécutable quelques centaines de kilo-octet plus. Cela peut poser un problème si vous installez un grand nombre de petits programmes, chacun étant surchargé par sa propre copie du runtime. La réponse est de créer un programme d'installation.

Nouveau projet -> « Configuration et déploiement » -> « projet d'installation »

Charger la sortie de vos projets d'application (définie en utilisant la version DLL du moteur d'exécution) dans le projet d'installation et de le construire. La dépendance à la DLL d'exécution sera notée, incluse dans le package d'installation, et soigneusement et discrètement installée au bon endroit sur la machine cible.

Questions connexes