Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1208 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [Visual C++ 2003] Generer un exe qui ne depend pas de msvcp71.dll ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Visual C++ 2003] Generer un exe qui ne depend pas de msvcp71.dll ?

n°896609
tanguy
Posté le 12-11-2004 à 10:42:30  profilanswer
 

J'utilise Visual C++ 2003 (nomme aussi VC7.1 ou encore .NET) et la librairie graphique Qt 3.3.3.
Malheureusement l'executable genere depend des dll suivantes:
msvcp71.dll, msvcp71d.dll, msvcr71.dll, msvcr71d.dll
 
Y'aurait-il un moyen de generer un executable qui ne depende pas des ces .dll ?
Visual C++ 6 n'a pas cette dependance, peut-on compiler en mode VC6 sous VC7 ?

mood
Publicité
Posté le 12-11-2004 à 10:42:30  profilanswer
 

n°896613
Lam's
Profil: bas.
Posté le 12-11-2004 à 10:47:17  profilanswer
 

C'est innovant ça, un exe qui dépend des lib débug et release en même temps...
 
Visual Studio 6 avait déjà une dépendance sur MSVCRT6.DLL. Tu ne la voyait pas parce qu'elle était installée sur tous les PC du monde et même d'ailleurs. Tout comme tes DLLs seront installées automatiquement sur Windows 2003 (je crois)...
 
Pour te débarasser de tout ça, vérifie que tu ne fais pas de Managed C++ (qui a besoin de .NET pour fonctionner), et que tu utilises un Run-time statically linked (ça doit être dans les options C++/Code Generation, mais je n'en suis pas sûr).  

n°896619
titi_4js
Posté le 12-11-2004 à 10:52:37  profilanswer
 

J'utilise moi-même Qt 3.3.3 compilé avec VC++ 7.1. En fait, j'utilise les runtime libraries multithreaded static (flag -MT).  
Pour que cela fonctionne, il faut aussi recompiler Qt après avoir changé le fichier
<QTDIR>\mkspecs\win32-msvc.net\qmake.conf (Il faut remplacer MD par MT).
 
Avec ça, ça marche très bien chez moi.

n°896714
tanguy
Posté le 12-11-2004 à 11:55:45  profilanswer
 

> C'est innovant ça, un exe qui dépend des lib débug et release en même temps...
 
En fait la c'etait un probleme homme plutot que machine :)
J'avais pas indique a Qt (dans mon .pro) de compiler en mode release. Maintenant je ne depend que de msvcp71.dll et msvcr71.dll. Y'aurait pas moyen de dependre de msvcp6.dll plutot ?
 
> j'utilise les runtime libraries multithreaded static (flag -MT)
 
Si j'ai bien compris, dans ce cas msvcp71.dll et msvcr71.dll ne disparaissent pas, c'est juste inclus dans le binaire final au lieu d'avoir des .dll separees ?
 
Moi ce que je veux obtenir c'est un installateur plus petit pour mon application. Les 2 dll de VC7 prennent 840ko.
 
Certain me diront, pourquoi ne pas utiliser Visual C++ 6 au lieu de VC7 ? C'est simple le compilo de VC6 est une grosse louse niveau C++ pour rester poli.

n°896804
HelloWorld
Salut tout le monde!
Posté le 12-11-2004 à 14:02:52  profilanswer
 

Utilise la version récente de la lib standard. msvcp71.dll et msvcr71.dll c'est très bien. msvcrt (de VC++ 6) est une known dll, c.a.d placée dans system32 et installée sur tous les postes. Oui mais y'en a XX versions qui se balladent (13 recencées je crois), ça cause des pblm, c'est le "dll hell".
Ce qu'il faut c'est mettre tes 2 dll au même endroit que ton exe. Si en plsu tu as fait un installeur, je vois pas où est le problème à avoir ces 2 dll. Si ça te gêne il faut compiler en static, et comme tu dis c'est comme si tes 2 dll se retrouvaient incluses dans l'exe.
Mais attention la dll Qt utilise aussi ces dll. Donc il faut aussi compiler et lier Qt en static, ce qui rallonge le temps d'édition des liens.
840 Ko face aux 5Mo de Qt, c'est rien du tout.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°897063
tanguy
Posté le 12-11-2004 à 17:57:16  profilanswer
 

HelloWorld a écrit :


Ce qu'il faut c'est mettre tes 2 dll au même endroit que ton exe. Si en plus tu as fait un installeur, je vois pas où est le problème à avoir ces 2 dll.


 
Merci a tous, je vais donc continuer comme je faisais avant. C'est a dire exactement comme tu viens de le decrire. Mon installeur (NSIS) fait 2.5Mo et j'avais voulu le reduire un peu plus. Je posais toutes ces questions car VC c'est pas le truc que je connais le plus: ca fait bizarre pour un linuxien de devoir inclure dans l'installation du soft les libs C et C++ !
 
Je me pose la question: tout le monde fait ca sous Windows ? toutes les applications s'amusent a inclure les dll msvcp et msvcr ?

n°897096
HelloWorld
Salut tout le monde!
Posté le 12-11-2004 à 18:31:27  profilanswer
 

tanguy a écrit :

Je me pose la question: tout le monde fait ca sous Windows ? toutes les applications s'amusent a inclure les dll msvcp et msvcr ?


Une application bien faite le fait oui. Tout ce qu'elle utilise elle le fourni. Y'a pas de miracle : soit tu le fais, soit c'est à l'utilisateur de se le récupérer et de se l'installer. Généralement sous Linux on dit à l'utilisateur de se le faire, sous Windows on fournit tout clé en main. Je vois mal une application dire à une secrétaire "Il vous faut la CRT de VC++ 7.1"...


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°897167
Lam's
Profil: bas.
Posté le 12-11-2004 à 19:57:44  profilanswer
 

HelloWorld a écrit :

Je vois mal une application dire à une secrétaire "Il vous faut la CRT de VC++ 7.1"...


 
Et celle de VC++ 6.0 pour QT 3.2 et celle de VC++ 5.0 pour la libjpeg 2.6.
 
Franchement, c'était un des aspects les plus répugnants de linux que cette incompatibilité entre version de libs standard C et C++. Heureusement que c'est stabilisé de nos jours...
 
Pour revenir à Windows, il est bon de savoir que pour tous les "gros" déploiements, on teste souvent les installs de softs sur des PC nus (donc fraichement installés ou ghostés), pour être sûr que toutes les DLL sont incluses (en particulier les trucs cons comme COMCTL32 et autres, qui parfois ne sont pas déjà présent en version correcte).  
 

n°897200
HelloWorld
Salut tout le monde!
Posté le 12-11-2004 à 20:55:08  profilanswer
 

Pour les grosses applis y'a des mecs pour qui le seul boulot c'est de s'occuper de ça...


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [Visual C++ 2003] Generer un exe qui ne depend pas de msvcp71.dll ?

 

Sujets relatifs
Indentation automatique sous Visual FortranGénérer une macro depuis un prog C++
Visual ASSIST lent a la sauvegardeProbleme d'installation Visual Studio 6 sous Windows XP SP2
maj champs dans entete sous word 2003 avec vbgenerer du code a partir de ..
Cherche conseils pour developper appli pour générer du pdfGénérer un fichier text a partir de ma base
Projet sous Borland C++ 16 à passer sous Microsoft Visual C 6[C][DOS] Generer un .txt contenant l'arboresence du DD
Plus de sujets relatifs à : [Visual C++ 2003] Generer un exe qui ne depend pas de msvcp71.dll ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR