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

C Discussion :

création des fichiers bibliothèques et de projets


Sujet :

C

  1. #1
    Futur Membre du Club
    Inscrit en
    décembre 2002
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : décembre 2002
    Messages : 10
    Points : 7
    Points
    7
    Par défaut [Résolu] création des fichiers bibliothèques et de projets
    Salut à tous,
    Je viens de décourvrir qu'il existaient des différences entre les fichiers bibliothèques .lib et les fichiers en tête .h . D'autant plus que la lecture de fichier .lib est impossible (symbôles bizaroïdes qui s'affichent). Ma question est comment sont créés les fichiers .lib et est ce qu'ils existent des méthodes pour les visualiser .

    @++
    ensi

  2. #2
    Responsable technique

    Avatar de Anomaly
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    juin 2003
    Messages
    10 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : juin 2003
    Messages : 10 241
    Points : 93 242
    Points
    93 242
    Billets dans le blog
    1
    Par défaut
    Ils sont même sacrément différents. Les .LIB sont destinés au lieur, les .H au compilateur.

    Le .LIB est en fait une manière d'accélérer la liaison car le lieur pourrait très bien aller chercher ses informations directement dans la .DLL correspondante (c'est ce qui se fait sous Unix). Donc il est possible (et nécessaire) de générer un .LIB depuis une .DLL. Ce format n'est pas standard, il dépend du lieur utilisé.

    Si tu compiles sous Borland, l'outil s'appelle "IMPLIB" et est en console Win32.
    Responsable technique forum & site

    Si ce message (ou un autre) vous a aidé et/ou vous semble pertinent, votez pour lui avec

  3. #3
    gl
    gl est déconnecté
    Rédacteur

    Homme Profil pro
    Inscrit en
    juin 2002
    Messages
    2 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : juin 2002
    Messages : 2 165
    Points : 4 605
    Points
    4 605
    Par défaut
    Tu peux aussi generer le .lib directement a partir des sources sans passer par une DLL.

    Les .h sont des fichiers texte contenant du code (generalement des prototypes de fonctions, des structures, des define, etc...) qui est inserer par le precompilateur dans le fichier .c (grace a #include) avant de compiler le fichier.
    Les .LIB contiennent du code compile qu'il faut lier avec tes sources.

    Anomaly, je suppose que ton explication se refere aux .LIB qui servent a offrir aux applications un index des fonctions d'une DLL (et ainsi eviter de devoir aller recuperer les informations dans la DLL), qui est un cas particulier de .LIB.

  4. #4
    Futur Membre du Club
    Inscrit en
    décembre 2002
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : décembre 2002
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    D'après les posts de anomaly et gl j'ai compris que les .lib contiennent des fonctions déjà compilées et traduites. Je voudrais maintenant poser un problème de pratique :
    Lorsque on compile un fichier source sous turbo C et qui est en liaison avec une biliothèque nous devons écrire :
    tcc -L[répertoire bibliothèque] fichier.c biblo.lib


    Est ce qu'on peut effectuer cette opération directement dans l'environnement de programmation ?
    J'espère que j'étais clair

  5. #5
    Responsable technique

    Avatar de Anomaly
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    juin 2003
    Messages
    10 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : juin 2003
    Messages : 10 241
    Points : 93 242
    Points
    93 242
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par gl
    Anomaly, je suppose que ton explication se refere aux .LIB qui servent a offrir aux applications un index des fonctions d'une DLL (et ainsi eviter de devoir aller recuperer les informations dans la DLL), qui est un cas particulier de .LIB.
    En effet, je ne parlais pas des librairies statiques, mais des fichiers qui décrivent les points d'entrée des librairies dynamiques. J'ai supposé qu'il parlait de ces fichiers-là, vu qu'il faisait le parallèle avec un .h et qu'il avait plus de chance de se trouver en face d'une librairie dynamique que statique. Mais j'aurais dû le mentionner. Honte à moi.

    Responsable technique forum & site

    Si ce message (ou un autre) vous a aidé et/ou vous semble pertinent, votez pour lui avec

  6. #6
    Responsable technique

    Avatar de Anomaly
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    juin 2003
    Messages
    10 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : juin 2003
    Messages : 10 241
    Points : 93 242
    Points
    93 242
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par ensi
    D'après les posts de anomaly et gl j'ai compris que les .lib contiennent des fonctions déjà compilées et traduites. Je voudrais maintenant poser un problème de pratique :
    Lorsque on compile un fichier source sous turbo C et qui est en liaison avec une biliothèque nous devons écrire :
    tcc -L[répertoire bibliothèque] fichier.c biblo.lib
    Est ce qu'on peut effectuer cette opération directement dans l'environnement de programmation ?
    Bon déjà, si tu utilises "tcc", je présume que tu utilises Turbo C++ pour DOS ? Si oui, ce n'est pas une librairie dynamique, ça n'existe pas sous DOS. Donc en fait ton .LIB n'est pas un index, mais contient bien tout le code de ta librairie. Donc le lieur peut lier ton code à cette librairie (l'exécutable sera indépendant), mais le compilateur a besoin de connaître les fonctions utilisées, les types et tout, d'où le .H lisible par le compilateur.

    Oui, il est possible de préciser le chemin des librairies dans l'environnement. Dans Options, Directories. L'emplacement exact du menu dépend de la version.
    Responsable technique forum & site

    Si ce message (ou un autre) vous a aidé et/ou vous semble pertinent, votez pour lui avec

  7. #7
    Membre éclairé
    Avatar de Elijha
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    avril 2003
    Messages
    314
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : avril 2003
    Messages : 314
    Points : 742
    Points
    742
    Par défaut
    Salut
    Citation Envoyé par ensi
    Est ce qu'on peut effectuer cette opération directement dans l'environnement de programmation ?
    Sous l'environnement turbo c++ dos (éditeur+compilo+linker), il y a possibilité de créer un projet (fichier.prj) dans lequel tu peu mettre tous les fichiers nécéssaires à ton programme.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    main.c          // Programme avec include fichier1.h/fichier2.h/fichier3.h
    fichier1.c      // Module 1
    fichier2.c      // Module 2
    fichier3.lib    // Module 3 "pré-compilé"
    Puis, lorsque tu lance la compilation et l'édition de liens, l'environnement prend l'ensemble et créer ton executable.

    Voila...
    - Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !
    - Travailler dur n'a jamais tué personne, mais pourquoi prendre le risque (Edgar Bergen)

  8. #8
    Expert éminent sénior

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

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : juin 2003
    Messages : 5 735
    Points : 10 567
    Points
    10 567
    Billets dans le blog
    3
    Par défaut
    D'après les posts de anomaly et gl j'ai compris que les .lib contiennent des fonctions déjà compilées et traduites
    Si c'est une lib statique (tcc) oui. Y'a alors pas de dll.
    Si c'est une lib dynamique, c'est la dll qui contient le code source des fonctions et le lib est juste là pour indique au compilo (au linker en fait) comment utiliser la dll (comment s'y lier). Y'a pas grand chose d'autre que le nom des fonctions et leurs arguments (pas de code).

  9. #9
    Futur Membre du Club
    Inscrit en
    décembre 2002
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : décembre 2002
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Salut à tous,
    Je viens de créer mon premier projet grâce aux indications d'Elijha :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    main.c          // Programme avec include fichier1.h/fichier2.h/fichier3.h 
    fichier1.c      // Module 1 
    fichier2.c      // Module 2 
    fichier3.lib    // Module 3 "pré-compilé"
    Je voudrais seulement ajouter qu'il faut passer par Project/Open Project , et puis ajouter les différents fichier sources et bibliothèques
    Merci et @++
    ensi

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 28/11/2007, 22h02
  2. Création des fichiers .reg
    Par kroma23 dans le forum Langage
    Réponses: 6
    Dernier message: 08/10/2007, 14h26
  3. Réponses: 5
    Dernier message: 19/08/2007, 15h47
  4. Problème de précision sur date de création des fichiers
    Par Bruno Orsier dans le forum Delphi
    Réponses: 2
    Dernier message: 07/06/2007, 15h26
  5. Réponses: 11
    Dernier message: 13/03/2006, 18h51

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