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

Autres éditeurs Discussion :

differences lib dll


Sujet :

Autres éditeurs

  1. #1
    Membre éclairé
    Inscrit en
    Mai 2003
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 86
    Par défaut differences lib dll
    Salut,

    Je me pose une question...

    Concrètement quelles sont les différences entre une lib et une dll (développement, utilisation, etc...) ?

    Quelqu'un aurait un petit lien ou quelques explications ?

    Merci

    (Je me doute que je ne suis pas dans le bon forum mais je ne sais pas trop où poser ma question)

  2. #2
    Membre Expert
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Par défaut
    Ta question aurait du etre mise dans "Outils pour C et C++, ..."

    Tu demandes en fait la difference entre une bibliotheque statique (.lib, .a) ou dynamique (.dll, .so). La difference se fait a l'edition de lien.
    Lorsque l'edition de lien est faite statiquement, le code des fonctions de la bibliotheque appelees par ton code est fusionne a ton code objet pour ne former qu'un executable. L'executable est donc plus gros, mais il est autonome (pas besoin de fournir d'autres fichiers).

    Lorsque l'edition de lien est faite dynamiquement, le code des fonctions n'est pas ajoute a l'executable. L'editeur de lien ajoute (tu peux le faire toi-meme, egalement) le code necessaire a l'obtention d'un pointeur vers la fonction appelee. L'avantage est que l'executable est plus petit, que plusieurs applications peuvent appeler la meme bibliotheque (shared), et qu'une mise a jour de la bibliotheque ne necessite pas la reconstruction de l'executable. Le defaut est qu'il faut fournir la bibliotheque a l'utilisateur afin qu'il la place dans un repertoire donne.

    Au niveau du developpement, les deux types de bibliotheques sont crees de la meme facon, mais avec des options de compilation differentes (variable selon le compilateur).

  3. #3
    Expert confirmé

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par défaut
    lib c'est imprécis. lib static vs. lib dynamique, ou bien différence entre fichier .lib et fichier .dll ?
    Car un .lib accompagne une dll afin de pouvoir linker avec cette dernière.
    Au niveau lib statique / dynamique, y'a quand même une grosse différence au niveau de la programmation : sous Windows, il faut spécifier les symboles qui doivent être exportés par la dll, alors que pour un lib statique on peut tout utiliser directement sans prendre de disposition particulière.

  4. #4
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

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

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Par défaut
    Autre différence : Quand on lie une bibliothèque statique, généralement, tous les objets non utilisés depuis le programme principal sont supprimés. Même si leur constructeur a un effet de bord qui serait visible depuis le programme principal. Quand utilise une bibliothèque dynamique, ça n'arrive pas.
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Février 2008
    Messages : 38
    Par défaut
    Citation Envoyé par JolyLoic Voir le message
    Autre différence : Quand on lie une bibliothèque statique, généralement, tous les objets non utilisés depuis le programme principal sont supprimés. Même si leur constructeur a un effet de bord qui serait visible depuis le programme principal. Quand utilise une bibliothèque dynamique, ça n'arrive pas.
    bon, je suis tout nouveau dans ce monde de lib et dll. J'ai dans un répertoire un gti_logger.lib et un gti_logger.dll.

    Je veux linker avec cygwin. j'écris
    g++ -L"//fr0-pen01/adage/test.win32/lib" -o"TestDLL.exe" ./src/TestDLL.o -lgti_logger
    et j'ai comme réponse une erreur qui est la suivante:

    ./src/TestDLL.o: In function `main':
    /cygdrive/c/Home/TO81028/workspaceCpp/TestDLL/Debug/../src/TestDLL.cpp:16: undefined reference to `_gti_getStream'

    qu'est ce que je n'ai pas compris?

    merci

    PS: je suis sur que ma dll contient la méthode gti_getStream

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    865
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 865
    Par défaut
    Citation Envoyé par hodac Voir le message
    PS: je suis sur que ma dll contient la méthode gti_getStream
    Juste pour vérifier. Comment contrôles-tu ceci ?

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Février 2008
    Messages : 38
    Par défaut
    Citation Envoyé par aoyou Voir le message
    Juste pour vérifier. Comment contrôles-tu ceci ?
    avec un logiciel trouvé sur le net... je ne me rappele pas du nom, je l'ai installé au boulot, et la je suis pas au boulot

  8. #8
    Membre émérite
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    865
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 865
    Par défaut
    Ah dommage. Es-tu sûr que tu n'as pas oublié le nom de la classe à l'implémentation, que le prototype entre la déclaration et la définition est la même ?

Discussions similaires

  1. Linkage, lib, dll toussa
    Par Stevie Wonder dans le forum Visual C++
    Réponses: 1
    Dernier message: 03/11/2006, 22h48
  2. Importer une lib/DLL écrite en borland en C++
    Par dandan80 dans le forum VC++ .NET
    Réponses: 3
    Dernier message: 04/10/2006, 12h02
  3. comment exporter namespace dans lib, dll ?
    Par lucky dans le forum MFC
    Réponses: 2
    Dernier message: 23/06/2006, 16h30
  4. Link .LIB [DLL]
    Par taron dans le forum MFC
    Réponses: 3
    Dernier message: 09/11/2005, 17h32
  5. compilation .lib .dll
    Par thierry31 dans le forum Autres éditeurs
    Réponses: 5
    Dernier message: 01/04/2005, 11h47

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