C'est bon, j'ai vérifié avec le dependency walker 2.1, y'a plus besoin des runtimes .... y'a bon !!
Kyle_Katarn
Ce que je voulais dire c'est "est ce qu'une fois linké en statis il me faut qd même distrib une dll avec le soft ?"
wpk
Kyle> quand tu lui dis de te linker ton proj avec les MFC en statique, t'as pas besoin de specifier les dll a linker, c'est le linker qui va faire le boulot a ta place.
BenB> les dll sont plus lentes la premiere fois que tu charge un prog qui en fait usage ensuite, la meme dll est utilise par plusieurs process et puisqu'elle est deja en memoire, tu gagne du temps sur les chargements ulterieurs...
Citation :
Sans compter sur toutes ces Dlls dans les repertoires de Windows, dont personne ne sait si elle sont utiles ou restent apres une desinstallation incomplete...
on n'est jamais oblige de mettre ses dll dans le rep de windows, on peut tres bien les laisser a cote de l'executable.
seblamb>
Citation :
De toute façon Microsoft à fait un article où il explique que ce n'est pas un toujours vrais, et qu'une dll peut être lancé plusieur fois en mémoire.
Dans les prochaines versions de windows on ne pourra plus partager la même dll entre plusieurs programmes. Chaque programme aura sa propre dll même si elles sont identiques. Ceci dans un soucis de rendre windows plus stable
Je vois plus bien alors l'interret d'une dll. Puis cette histoire explique ptetre en partie le fait que XP a besoin d'au moins 256Mo de ram pour un fonctionnement normal.
Kyle_Katarn
ok merci beaucoup !
Et dans ce cas là, de quoi à besoin un projet VC++ avec MFC linké en static ? msvcrt.dll mfc42.dll ? aucun des 2 ?
BENB
wpk a écrit a écrit :
sans probleme, dans les settings, tu choisis Use MFC in a Static Library et ca marche.
Une petite mise en garde cependant : le fait de linker des dll en statique est un peu crade. Une dll c'est fait pour etre partagee par plusieurs process en meme temps. Si chaque process s'amuse a linker en statique des dll qui pouraient etre communes, tout l'avantage de la factorisation est perdu, ca ne fait qu'encombrer la mem de l'utilisateur avec n fois le meme code.
Oui mais...
du point de vue vitesse d'execution, les Dlls sont plus lentes, dans le cas d'un link statique seul le code utile est transfere dans l'executable, et au moins on est sur de ne pas oublier de distribuer la Dll. Sans compter sur toutes ces Dlls dans les repertoires de Windows, dont personne ne sait si elle sont utiles ou restent apres une desinstallation incomplete...
Non vraiment, mieux vaut linker en static a mon avis.
seblamb
wpk a écrit a écrit :
sans probleme, dans les settings, tu choisis Use MFC in a Static Library et ca marche.
Une petite mise en garde cependant : le fait de linker des dll en statique est un peu crade. Une dll c'est fait pour etre partagee par plusieurs process en meme temps. Si chaque process s'amuse a linker en statique des dll qui pouraient etre communes, tout l'avantage de la factorisation est perdu, ca ne fait qu'encombrer la mem de l'utilisateur avec n fois le meme code.
De toute façon Microsoft à fait un article où il explique que ce n'est pas un toujours vrais, et qu'une dll peut être lancé plusieur fois en mémoire. Dans les prochaines versions de windows on ne pourra plus partager la même dll entre plusieurs programmes. Chaque programme aura sa propre dll même si elles sont identiques. Ceci dans un soucis de rendre windows plus stable
Kyle_Katarn
oui mais distribuer 2 Mo de fichiers juste au cas ou ... C'est un peu lourd aussi
wpk
sans probleme, dans les settings, tu choisis Use MFC in a Static Library et ca marche.
Une petite mise en garde cependant : le fait de linker des dll en statique est un peu crade. Une dll c'est fait pour etre partagee par plusieurs process en meme temps. Si chaque process s'amuse a linker en statique des dll qui pouraient etre communes, tout l'avantage de la factorisation est perdu, ca ne fait qu'encombrer la mem de l'utilisateur avec n fois le meme code.
Kyle_Katarn
alors ?
Kyle_Katarn
ok merci.
Et quand on a crée en dynamique, y'a moyen de passer enstatique sans se repayer tout le soft à écrire ?
antsite
Au début tu as un assistant pour créer ta MFC.
A une étape on te demande Shared DLL
Static Linked Library.
Tu prens l'option Static linked Lib
BENB
Kyle_Katarn a écrit a écrit :
Ce que je souhaiterai c'est distribuer mes exes avec le moins de dll possible. Donc si je défini mon projet comme utiluisant les mfc en statique, j'aurais pas besoin des dll ?
c'est exatement ce qu'il faut faire dans ton cas...
Kyle_Katarn
Ce que je souhaiterai c'est distribuer mes exes avec le moins de dll possible. Donc si je défini mon projet comme utiluisant les mfc en statique, j'aurais pas besoin des dll ?
gilou
Si tu as le source des MFC (c'est fourni, non?) tu devrais pouvoir tout recompiler en statique, je pense.
Mais, bon, ton approche me semble bizarre.
A+,
Kyle_Katarn
Avec VC++ et mfc, y'a un moyen (passage en statique ou autre) pour ne pas avoir besoin de mfc42.dll et msvcrt.dll ?