2013-05-27 4 views
4

Je suis passé de Visual C++ 2010 Express à Visual C++ 2012 Professional pour mon application (Euler Math Toolbox). Pour être compatible avec XP, j'utilise la plate-forme 110-XP de la mise à jour 1 de Visual C++ 2012.Inclure Visual C++ Runtime avec Application

Dans les versions antérieures, j'ai ajouté trois fichiers DLL MSV90 * .dll dans le répertoire du programme et un manifeste pour ceux-ci. Puis-je le même pour Visual C++ 110? Et quels fichiers aurais-je besoin d'inclure? Et ai-je besoin d'un manifeste? Si oui, où puis-je en trouver un?

+7

Incluez le [package redistribuable Visual C++] (http://www.microsoft.com/en-us/download/details.aspx?id=30679) avec votre application. Utilisez le programme d'installation du package pour copier les fichiers; ne les copiez pas vous-même. (Parce que vous pouvez accidentellement écraser une version plus récente avec une version plus ancienne.) –

+0

@RaymondChen - Si je pouvais upvote votre commentaire 100 fois je le ferais. C'est la meilleure façon de le faire. Ajoutez-le comme une réponse et je vais upvote cela. – pstrjds

+0

N'hésitez pas à répondre à votre question et acceptez-la. –

Répondre

3

Résumant mes résultats jusqu'à présent, il y a quatre options:

  1. fournir un lien vers la page de téléchargement MS le moteur d'exécution VC.
  2. Ajoutez un programme d'installation pour l'exécution VC à votre installation.
  3. Copiez msvcr ***. Dll dans le répertoire de votre programme.
  4. Compile avec des bibliothèques statiques.

Tout cela semble fonctionner.

(1) ou (2) ont évidemment le problème avec différentes versions de l'exécution. Nous devons faire confiance à Microsoft et aux développeurs de programmes pour rester compatibles.

(3) a le problème que la DLL que vous ajoutez doit fonctionner sur la machine cible.

J'ai décidé d'utiliser (4), car cela fonctionne. Pour l'essayer, définissez /MT dans les propriétés C++ -> Génération de code pour votre projet.

+0

Les problèmes que vous avez énumérés pour 1, 2 et 3 n'ont pas vraiment de sens. Pour 1 et 2, le maintien de la compatibilité n'est pas un fardeau car vous compilez le code de l'application pour cibler une version spécifique du CRT, ainsi vous savez qu'ils fonctionnent ensemble. Ensuite, vous liez à (ou bundle) cette version du CRT-pas de problèmes de compatibilité. Pour 3, je ne sais même pas ce que vous voulez dire par "la DLL que vous ajoutez doit fonctionner sur la machine cible". Ce n'est pas un problème non plus, le CRT fonctionne très bien sur toutes les machines. Si ce n'est pas le cas, vous avez de plus gros problèmes. Si vous êtes inquiet du coût de chargement d'une DLL ... ne le faites pas. –

+0

Pour 1, vous avez peut-être raison, à condition que toutes les versions du runtime VC110 soient compatibles. Il existe différentes versions, ne sont pas là? Pour 2, le programme d'installation est peut-être plus ancien que la version actuelle, ce qui pose problème. Vous avez raison sur 3, si vous choisissez la bonne version pour votre programme (ARM, 32bit ou 64bit). J'ai eu des problèmes avec ça. – Rene

Questions connexes