Comment emballer un projet Visual Studio C ++ pour sa sortie?

Translate

Je me demande comment créer une version de version qui inclut tous les fichiers dll nécessaires dans le .exe afin que le programme puisse être exécuté sur une machine non-développement sans avoir à installer le redistribuable Microsoft sur la machine cible.

Sans cela, vous obtenez le message d'erreur indiquant que la configuration de l'application n'est pas correcte et vous devez réinstaller.

This question and all comments follow the "Attribution Required."

Toutes les réponses

Translate
  1. Choisissez Projet -> Propriétés
  2. Sélectionnez Configuration -> Général
  3. Dans la zone indiquant comment vous devez lier MFC, choisissez de le lier de manière statique.
  4. Choisissez Linker -> Input. En dessous deDépendances supplémentaires, ajoutez toutes les bibliothèques dans lesquelles votre application doit se lier de manière statique.
La source
Trista Lee
Translate

Vous devez définir la bibliothèque d'exécution (sous C / C ++ -> Génération de code) pour TOUS les projets sur une liaison statique, qui correspond aux configurations de bâtiment par défaut suivantes:

  • Débogage / libération multithread
  • Débogage / libération mono-thread

Contrairement aux versions «DLL» de ces bibliothèques.

Même si vous faites cela, selon les bibliothèques que vous utilisez, vous devrez peut-être installer un module de fusion / framework / etc. Cela dépend de la disponibilité ou non des versions LIB statiques de vos dépendances.

La source
Translate

Soit conscient queMicrosoft ne recommande pas de lier statique le runtime à votre projet, car cela l'empêche d'être desservi par Windows Update pour corriger les bogues de sécurité critiques. Il y a aussi des problèmes potentiels si vous passez de la mémoire entre vos fichiers .exe et .dll principaux, comme si chacun de ces liens statiques le runtime, vous pouvez vous retrouver avec des problèmes d'incompatibilité malloc / free.

Vous pouvez inclure les DLL avec l'exécutable, sans les compiler dans le .exe et sans exécuter l'outil de redistribution - c'est ce que je fais et cela semble fonctionner correctement.

Le seul inconvénient est que vous devez inclure les fichiers deux fois si vous distribuez pour un large éventail de versions de Windows - les nouveaux systèmes d'exploitation ont besoin des fichiers dans des répertoires définis par le manifeste, et les plus anciens veulent tous les fichiers dans le répertoire du programme .

La source
Translate

Vous recherchez un lien statique (par opposition à un lien dynamique)

Je ne sais pas combien de redistribuables MS sont liés statiquement.

La source
Translate

Si vous cherchez à savoir quelles DLL votre machine cible manque, utilisez depend.exe qui était auparavant fourni avec MSDev, mais qui peut également être trouvéici. Tester ceci sur quelques machines cibles devrait vous dire quelles DLL vous devez empaqueter avec votre application.

La source