IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

VC++ .NET Discussion :

Lib statique avec d�pendances dynamiques


Sujet :

VC++ .NET

  1. #1
    Membre �m�rite
    Avatar de Ange_blond
    Homme Profil pro
    Ing�nieur d�veloppement en 3D temps r�el
    Inscrit en
    Mars 2007
    Messages
    902
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 40
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement en 3D temps r�el
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Mars 2007
    Messages : 902
    Par d�faut Lib statique avec d�pendances dynamiques
    Bonjour,

    Voil� mon petit soucis :

    J'utilise une bibliotheque dynamiquement (.dll) pour mon projet.
    J'ai besoin de sortir un peu de code de mon projet pour en faire une lib r�utilisable par d'autres projets.

    Donc c'est l� o� vient le mais :

    Lorsque que je compile mon bout de code en lib statique (pour �viter une dll de plus), le .lib est enorme (22Mo en release) alors qu'il y a a peine quelques milliers de lignes de code...
    Ce que je souhaite savoir c'est :
    1. est ce que c'est possible de compiler une lib statique qui a des d�pendances dynamiques ? (je ne veux pas que le code des d�pendances dynamique soit inclu dans mon .lib)
    2. si oui, comment ?

    Merci.

    Ange_blond

  2. #2
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    D�tails du profil
    Informations personnelles :
    �ge : 51
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par d�faut
    Une librairie statique n'est absolument pas li�e, ni de pr�s, ni de loin : aucune d�pendance n'est r�solue, c'est l'ex�cutable utilisateur (EXE ou DLL) qui effectuera la liaison directe. Par contre, elle subit bien s�r l'inlining et autres formes d'optimisation pouvant modifier plus ou moins fortement la taille du code produit.
    A noter que la taille du .LIB n'est pas forc�ment tr�s significative, � cause des informations de debug et des fonctions "inutiles" qui ne seront pas forc�ment li�es � l'ex�cutable si tu actives le link au niveau fonction.

    Tu peux t'en convaincre sur la page des propri�t�s d'une librairie statique : il n'y a PAS de section "�dition de liens"...
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au s�rieux, de toutes fa�ons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum ad�quat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  3. #3
    Membre �m�rite
    Avatar de Ange_blond
    Homme Profil pro
    Ing�nieur d�veloppement en 3D temps r�el
    Inscrit en
    Mars 2007
    Messages
    902
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 40
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement en 3D temps r�el
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Mars 2007
    Messages : 902
    Par d�faut
    D'accord, donc ma lib ne va pas chercher � inclure les d�pendances de la bibliotheque que j'utilise pour mon projet...

    Par contre je comprend vraiment pas comment je m'en sort avec 22Mo pour les quelques classes qu'il y a...
    Le soucis �tant que plusieurs projet vont utiliser statiquement cette lib, et donc ils vont tous "prendre" 22Mo alors que rares sont ceux qui d�passent le Mo ...

    Les options de compil sont en effet r�duites, mais peut etre que je rate une �tape en cours de route ... ?

  4. #4
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    D�tails du profil
    Informations personnelles :
    �ge : 51
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par d�faut
    Citation Envoy� par Ange_blond Voir le message
    D'accord, donc ma lib ne va pas chercher � inclure les d�pendances de la bibliotheque que j'utilise pour mon projet...
    Non, en effet, c'est une DLL qui ferait �a. Mais tu auras bien s�r besoin des ent�tes pour compiler la librairie, bien s�r.
    Tu peux (partiellement) inclure les d�pendances via un "#pragma comment(lib)", mais �a ne te dispensera pas d'avoir les librairies de d�pendances sous le coude pour cr�er un ex�cutable ou une DLL utilisant ta librairie statique.

    Citation Envoy� par Ange_blond Voir le message
    Par contre je comprend vraiment pas comment je m'en sort avec 22Mo pour les quelques classes qu'il y a...
    Le soucis �tant que plusieurs projet vont utiliser statiquement cette lib, et donc ils vont tous "prendre" 22Mo alors que rares sont ceux qui d�passent le Mo ...
    C'est bien le probl�me avec les librairies statiques, justement !
    Essaie quand m�me de linker un ex�cutable de test : tu as peut-�tre beaucoup d'informations de debug dedans, ce qui produira un ex�cutable assez petit, ou alors, tu as vraiment trop abus� des templates.
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au s�rieux, de toutes fa�ons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum ad�quat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  5. #5
    Membre �m�rite
    Avatar de Ange_blond
    Homme Profil pro
    Ing�nieur d�veloppement en 3D temps r�el
    Inscrit en
    Mars 2007
    Messages
    902
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 40
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement en 3D temps r�el
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Mars 2007
    Messages : 902
    Par d�faut
    Merci

    Je vais qd meme tenter � l'occasion un exe de test en effet pour voir s'il embarque pas plus de d�pendances qu'il ne faut...

    Par contre c pas logique : 22Mo en Release, 8Mo en debug....

    Et le truc qui tue : sous linux, la lib en static ou en dynamic ne d�passe pas les quelques centaines de Ko tout au plus. (fait avec NetBeans)

  6. #6
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    D�tails du profil
    Informations personnelles :
    �ge : 51
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par d�faut
    Citation Envoy� par Ange_blond Voir le message
    Par contre c pas logique : 22Mo en Release, 8Mo en debug....
    Tu noteras, dans les optimisations, que certaines optimisations de vitesse sont diplomatiquement marqu�es comme "pouvant augmenter la taille de l'ex�cutable" (au profit de la vitesse d'ex�cution, donc).

    C'est une des raisons pour laquelle je me m�fie toujours des templates utilis�s n'importe comment et/ou n'importe o�...
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au s�rieux, de toutes fa�ons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum ad�quat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  7. #7
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    J'ai d�j� vu Visual me d�tecter une fonction de calcul d'un tableau de 16Mo et me remplacer cette fonction par une copie du tableau directement dans l'ex�cutable produit.
    D�sactiver l'inlining sur l'unit� de compilation concern�e (c'�tait Visual 6, pas de LTCG � l'�poque) a r�solu le probl�me.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

Discussions similaires

  1. R�ponses: 9
    Dernier message: 01/04/2012, 04h44
  2. Cr�er une lib dynamique avec des lib statiques
    Par skeleton18 dans le forum C
    R�ponses: 3
    Dernier message: 11/06/2011, 12h05
  3. "lib statique" vs "lib dynamique" vs "objet COM"
    Par ram-0000 dans le forum Windows
    R�ponses: 3
    Dernier message: 13/01/2009, 13h27
  4. ComboBox avec donn�es dynamiques ET statiques ?
    Par kaptnkill dans le forum VBA Access
    R�ponses: 2
    Dernier message: 31/07/2008, 16h06
  5. Convertir une lib dynamique � une lib statique
    Par Sceener dans le forum Autres
    R�ponses: 2
    Dernier message: 11/07/2007, 20h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo