Question

Je me demandais comment faire un communiqué de construire qui comprend tout le nécessaire fichiers dll dans le .exe sorte que le programme peut être exécuté sur un ordinateur de développement non sans avoir à installer le microsoft package redistribuable sur la machine cible.

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

Était-ce utile?

La solution

  1. Choisissez Projet> Propriétés
  2. Sélectionnez Configuration -> Général
  3. Dans la boîte de la façon dont vous devriez avoir un lien MFC, choisir de lier statiquement il.
  4. Choisissez L'Éditeur De Liens -> Entrée.En vertu de Dépendances Supplémentaires, ajouter les bibliothèques que vous avez besoin de votre app pour lier statiquement dans.

Autres conseils

Vous devez définir la bibliothèque run-time (Sous C/C++ -> Génération de Code) pour TOUS les projets d'une liaison statique, qui est corrélée à la suite de défaut de construction de configurations:

  • Multithread Debug/Release
  • Single Thread Debug/Release

Par opposition à la "DLL" des versions de ces bibliothèques.

Même si vous le faites, selon les bibliothèques que vous utilisez, vous pourriez avoir à installer un Module de Fusion/cadre/etc.Elle dépend de la LIB statique versions de vos dépendances sont disponibles.

Sachez que Microsoft ne recommande pas de lien statique de l'exécution de votre projet, cela l'empêche d'être desservies par windows mise à jour de correctif de sécurité critique de bugs.Il y a aussi des problèmes potentiels si vous êtes de passage de la mémoire entre votre main .exe et .les fichiers dll comme si chacun de ces des liens statiques de l'exécution, vous pouvez vous retrouver avec malloc/free problèmes d'incompatibilité.

Vous pouvez inclure les Dll avec l'exécutable, sans leur compilation dans le .exe et sans courir le redist outil - c'est ce que je fais et il semble bien fonctionner.

La seule voler dans l'onguent est que vous devez inclure les fichiers en double si vous êtes à la distribution pour un large éventail de versions de Windows - la plus récente de l'OSs ont besoin que les fichiers dans le manifeste défini répertoires, et les plus âgés veulent tous les fichiers dans le répertoire du programme.

Vous seriez à la recherche de lien statique (par opposition à un lien dynamique)

Je ne suis pas sûr combien de MS transmissibles lier statiquement dans.

Si vous êtes à la recherche pour savoir quelle dll de votre machine cible est manquant, l'utilisation depends.exe qui viennent avec MSDev, mais peut aussi être trouvé ici.Le test de ce à quelques machines cibles devrait vous dire qui dll vous avez besoin de package de votre application.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top