2010-06-04 6 views
1

J'ai écrit une simple application Hello, world en C++ à l'aide de Visual Studio 2008. Je suis en mesure d'exécuter l'application avec succès sur ma machine locale. BUt quand je copie l'exe sur une autre machine et que je l'exécute, il ne fonctionne pas. Il donne l'erreur que «l'application n'a pas pu démarrer car la configuration de l'application est incorrecte». Visual Studio n'est pas installé sur un autre système. Quel pourrait être le problème?Impossible d'exécuter une application C++ native sur une autre machine

Merci, Rakesh.

+0

Est-ce qu'il manque une DLL? – Naveen

+0

Dependency Walker est votre ami. Il vous dira quelles DLL sont requises par votre application (et celles qui manquent si vous l'utilisez sur le PC cible). – Rob

Répondre

5

La DLL CRT est probablement manquante. Compilez votre application en utilisant CRT statique -/MT (/ MTd pour le débogage). More info.

Dans Visual Studio, accédez à Propriétés du projet> C/C++> Génération de code> Bibliothèque d'exécution.

4

Je pense que vous avez besoin

1) Pour installer Microsoft Visual C++ 2008 Redistributable Package (x86)

2) En savoir plus sur les manifestes et le déploiement d'applications C++: Scenarios for Deployment Examples, Choosing a Deployment Method

+0

été là .. Le package redistribuable ne fonctionne que pour la configuration Release (pas la configuration de débogage). – Default

+0

@Michael dans ce cas, intégrer dans la version. Si les bibliothèques de débogage ne sont pas dans le paquet redistribuable, elles ne sont pas couvertes par l'eula pour la redistribution, et vous ne pouvez légalement les mettre sur une machine sans installer Visual Studio. –

1

Vous êtes absent des bibliothèques d'exécution nécessaires (par exemple, MSVCRT.DLL, MSVCR80.DLL, etc.). Vous devrez peut-être installer les bibliothèques d'exécution sur la machine cible (cela sera généralement fait par un installateur). Tout d'abord, assurez-vous de lier avec la version version des DLL d'exécution (les versions de débogage ne sont pas redistribuables).

Si vous ne savez pas quelles DLL vous manquent, vous pouvez ouvrir votre exécutable avec l'outil Dependency Walker (depends.exe) pour voir la liste des dépendances.

S'il vous manque MSVCRT.DLL, vous pouvez choisir de le lier statiquement à la place.

0

Vous avez probablement construit votre application avec le support CLR et inclus quelque chose comme appconfig? Si vous n'avez pas besoin de CLR, vous pouvez le désactiver dans les options de projet. Si le problème est lié au fichier .config, vous pouvez également le copier avec votre PE et tout fonctionnera.

Questions connexes