Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 10 sur 10
  1. #1
    Invité de passage
    Inscrit en
    mai 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : mai 2007
    Messages : 9
    Points : 2
    Points
    2

    Par défaut créer un fichier .lib avec code::blocks

    bonjour
    je travaille sous win7 64 bits

    comment faire pour créer un fichier dll et sa librairie ".lib" et non pas ".a"
    avec code::blocks (gcc compiler).

    le dll fonctionne à 100% mais je n'ai pas le .lib

    le ficher .lib sera utilisé dans autres IDE comme visual c++ de microsoft

    1000 merci

  2. #2
    Modérateur

    Homme Profil pro Cyrille
    Network programmer
    Inscrit en
    juin 2010
    Messages
    2 201
    Détails du profil
    Informations personnelles :
    Nom : Homme Cyrille
    Âge : 27
    Localisation : France

    Informations professionnelles :
    Activité : Network programmer

    Informations forums :
    Inscription : juin 2010
    Messages : 2 201
    Points : 5 724
    Points
    5 724

    Par défaut

    Bonjour,

    je ne crois pas C::B capable de créer des .lib.
    Les .lib sont spécifiques Visual Studio, il faut compiler la bibliothèque avec VS pour avoir le .lib associé.

  3. #3
    Invité de passage
    Inscrit en
    mai 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : mai 2007
    Messages : 9
    Points : 2
    Points
    2

    Par défaut

    merci mon ami pour ta réponse.

  4. #4
    Expert Confirmé Sénior

    Inscrit en
    janvier 2007
    Messages
    10 183
    Détails du profil
    Informations personnelles :
    Âge : 57

    Informations forums :
    Inscription : janvier 2007
    Messages : 10 183
    Points : 14 353
    Points
    14 353

    Par défaut

    Il n'y a que 2 types de biblothèques généraux ;

    • les biblothèques statiques (.a)

    • les biblothèques dynamiques (.so sous unixoides, DLL sous Windows)



    Comme on te l'a dit, ".lib" n'est pas une extension générale, mais d'un outil particulier..
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  5. #5
    Rédacteur/Modérateur
    Avatar de Melem
    Homme Profil pro Jessee Michaël Christian Edouard
    Ingénieur développement logiciels
    Inscrit en
    janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Nom : Homme Jessee Michaël Christian Edouard
    Âge : 28
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : janvier 2006
    Messages : 3 656
    Points : 8 154
    Points
    8 154

    Par défaut

    Citation Envoyé par jellad.tarek Voir le message
    comment faire pour créer un fichier dll et sa librairie ".lib" et non pas ".a"
    avec code::blocks (gcc compiler).
    Pour avoir un .lib il suffit d'utiliser un compilateur autre que gcc, c'est-à-dire Visual C++, Borland C++ Compiler ou encore Lcc-Win32. Mais ce n'est pas l'extension le vrai problème, c'est le format de fichier. Une bibliothèque gcc (.a) n'a pas le format qu'une bibliothèque (.lib) Visual C++, qui n'a pas non plus le même format qu'une bibliothèque (.lib) Borland, qui n'a pas non plus le même format qu'une bibliothèque (.lib) Lcc-Win32, etc. Ce que cela signifie en pratique ? Tu ne peux par exemple pas utiliser un .lib généré par Visual C++ avec le compilateur de Borland, et vice versa. Les libs générés par Visual C++ ne sont donc utilisables qu'avec Visual C++. Valable pour tous les autres compilateurs. Bien entendu, il s'agit d'une règle générale mais rien n'empêche un constructeur particulier de supporter plusieurs formats, mais cela est vraiment très rare. Tu peux toujours te tourner vers les outils de conversion si besoin.

    Citation Envoyé par souviron34
    Comme on te l'a dit, ".lib" n'est pas une extension générale, mais d'un outil particulier..
    Quoique l'extension la plus répandue sous Windows est quand même .lib, il n'y a que gcc qui utilise l'extension .a.

    En outre, s'il n'y a que deux types de libs sous *n*x (.a et .so), il y en a 3 sous Windows :

    - lib statiques (.lib) : semblables aux .a d'unix.
    - lib d'importation (.lib également) : à utiliser pour se lier avec une DLL donnée. Malgré la même extension, ça n'a rien à voir avec un .lib statique.
    - lib dynamiques (.dll) : sembables aux .so d'unix.

  6. #6
    Expert Confirmé Sénior

    Inscrit en
    janvier 2007
    Messages
    10 183
    Détails du profil
    Informations personnelles :
    Âge : 57

    Informations forums :
    Inscription : janvier 2007
    Messages : 10 183
    Points : 14 353
    Points
    14 353

    Par défaut

    Citation Envoyé par Melem Voir le message
    Quoique l'extension la plus répandue sous Windows est quand même .lib, il n'y a que gcc qui utilise l'extension .a.

    En outre, s'il n'y a que deux types de libs sous *n*x (.a et .so), il y en a 3 sous Windows :

    - lib statiques (.lib) : semblables aux .a d'unix.
    - lib d'importation (.lib également) : à utiliser pour se lier avec une DLL donnée. Malgré la même extension, ça n'a rien à voir avec un .lib statique.
    - lib dynamiques (.dll) : sembables aux .so d'unix.

    Dont acte .. Mea Culpa

    Vraiment, W$ c'est de la m.rde pour la portabilité...

    Et quand je vois le point 2 de ta liste... Heruseuement que je ne développe quasi jamais sous Win..
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  7. #7
    Rédacteur/Modérateur
    Avatar de Melem
    Homme Profil pro Jessee Michaël Christian Edouard
    Ingénieur développement logiciels
    Inscrit en
    janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Nom : Homme Jessee Michaël Christian Edouard
    Âge : 28
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : janvier 2006
    Messages : 3 656
    Points : 8 154
    Points
    8 154

    Par défaut

    J'avoue que c'est un peu c*n. Mais c'est comme ça .

  8. #8
    Invité de passage
    Inscrit en
    mai 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : mai 2007
    Messages : 9
    Points : 2
    Points
    2

    Par défaut

    mais les amis j'ai importé un .lib (vc++ 2010) sous
    code::blocks (gcc) et ça marché sans problème

    en plus j'ai essayé d'importer un .a (gcc) sous vc++ et ça marche
    aussi

  9. #9
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    septembre 2007
    Messages
    5 458
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : septembre 2007
    Messages : 5 458
    Points : 13 934
    Points
    13 934

    Par défaut

    Citation Envoyé par Melem Voir le message
    - lib statiques (.lib) : semblables aux .a d'unix.
    - lib d'importation (.lib également) : à utiliser pour se lier avec une DLL donnée. Malgré la même extension, ça n'a rien à voir avec un .lib statique.
    - lib dynamiques (.dll) : sembables aux .so d'unix.
    D'ailleurs, puisque tu en parles et puisque ça fait un moment également que je n'ai pas non plus codé sous Windows, est-ce que les deux versions de « *.lib » sont vraiment deux types de fichiers complètement différents, ou est-ce que la « lib d'importation » est en fait une bibliothèque statique ordinaire mais ne contenant que les informations requises à la liaison à une bibliothèque dynamique ?

  10. #10
    Rédacteur/Modérateur
    Avatar de Melem
    Homme Profil pro Jessee Michaël Christian Edouard
    Ingénieur développement logiciels
    Inscrit en
    janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Nom : Homme Jessee Michaël Christian Edouard
    Âge : 28
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : janvier 2006
    Messages : 3 656
    Points : 8 154
    Points
    8 154

    Par défaut

    Citation Envoyé par jellad.tarek Voir le message
    mais les amis j'ai importé un .lib (vc++ 2010) sous
    code::blocks (gcc) et ça marché sans problème

    en plus j'ai essayé d'importer un .a (gcc) sous vc++ et ça marche
    aussi
    Ah oui c'est vrai, gcc et Visual C++ supportent chacun les .a gcc et les .lib Visual C++, mais ils ne génèrent respectivement que des .a et des .lib. Encore un truc c*n .

    est-ce que les deux versions de « *.lib » sont vraiment deux types de fichiers complètement différents, ou est-ce que la « lib d'importation » est en fait une bibliothèque statique ordinaire mais ne contenant que les informations requises à la liaison à une bibliothèque dynamique ?
    Ben, les .obj et .lib de Windows sont tous au format COFF de toute façon, donc il y a forcément une structure commune. La différence se situe surtout au niveau du contenu.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •