129 votes

Comment puis-je faire entièrement lié statiquement .exe avec Visual Studio Express 2005?

Mon préféré C++ environnement libre et largement excellent Microsoft Visual Studio 2005 Express edition. De temps en temps, j'ai envoyé la libération .exe fichiers à d'autres personnes, avec des résultats satisfaisants. Toutefois, récemment, j'ai fait la découverte inquiétante que les bons résultats étaient basés sur plus de chance que je le voudrais. La tentative d'exécution de l'une de ces programmes sur un vieux (2001 vintage, pas scrupuleusement mis à jour) boîte de XP ne m'as rien donné, mais un méchant "du Système ne peut pas s'exécuter x.exe" (ou similaire) message.

Quelques recherches sur google a révélé que avec cet ensemble d'outils, même en spécifiant la liaison statique des résultats dans un simple hello-world.exe en fait en s'appuyant sur extra .les fichiers dll (msvcm80.dll etc.). Un incroyablement élaborer la version comploteurs (système de fichiers manifest quelqu'un?) alors ne permettra pas à l' .exe exécuter sans tout à fait le droit .versions de dll. Je n'ai pas envie ou besoin de ce genre de choses, je veux juste un vieux autonome .exe qui ne fait rien mais plus petit dénominateur commun Win32 opérations et fonctionne sur n'importe quel vieux win32 OS.

Personne ne sait si c'est possible de faire ce que je veux faire avec mes outils ?

Je vous remercie.

147voto

Rob Walker Points 25840

Pour la C-runtime aller aux paramètres du projet, choisissez C/C++, puis "la Génération de Code'. Modifier le "runtime library" réglage de "multithread" au lieu de "multithread dll".

Si vous utilisez d'autres bibliothèques que vous avez peut-être besoin de dire à l'éditeur de liens ignorer la liée de façon dynamique CRT explicitement.

5voto

Jared Updike Points 3946

J'ai eu ce même problème de dépendance et je sais aussi que vous pouvez inclure le VS 8.0 Dll (version uniquement! pas de débogage!---et votre programme doit être communiqué, trop) dans un dossier du nom approprié, dans le dossier parent avec votre .exe:

Comment: Déployer à l'aide de la commande XCopy (MSDN)

Notez aussi que les choses sont garantis à déraper si vous avez besoin d'avoir le C++ et le code C dans la même lié statiquement .exe parce que vous obtiendrez de l'éditeur de liens conflits qui ne peuvent être résolus qu'en ignorant le bon libXXX.lib et puis de la liaison dynamique (Dll).

Enfin, avec un ensemble d'outils (VC++ 6.0) choses "tout le travail", depuis Windows 2000 et au-dessus ont la bonne Dll installé.

2voto

Jesse Salazar Points 317

En ce qui concerne Jared réponse, avoir Windows 2000 ou mieux, ne sera pas nécessairement résoudre le problème à la main. Rob réponse ne le travail, mais il est possible que ce correctif introduit les questions de sécurité, les mises à jour Windows ne sera pas en mesure de patch applications intégrées en tant que telles.

Dans un autre post, Nick Guerrera suggère l'emballage le Runtime Visual C++ Redistribuable avec vos applications, qui s'installe rapidement, et est indépendante de Visual Studio.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X