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 :

Création d'une librairie ???


Sujet :

Autres éditeurs

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    460
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2003
    Messages : 460
    Points : 112
    Points
    112
    Par défaut Création d'une librairie ???
    Bon, une fois n'est pas coutume, j'ai besoin de vos lumières...

    J'ai fini le code d'un programme (jeu des tours de Hanoï). C'est donc un fichier au format .cpp

    Dans ce fichier, je fais appel (via un #include) à un fichier .h (qui contient des fonctions auxquelles le programme principal fait appel; c'est en fait, un fichier pour l'usage des piles).
    Seulement, on m'a conseillé de scinder ce fichier .h en 2 parties:
    - la partie qui contient les prototypes de fonctions reste le fichier .h
    - la seconde partie qui contient le corps des fonctions devrait être compilée de manière à devenir une librairie.

    * Comment est-ce que je dois faire cela ?
    * Au final, quand j'aurai mes 3 fichiers, peuvent-ils se trouver dans le même répertore (ou dois-je placer le .h dans le répertoire Include) ?
    * Dans mon programme principal, je présume que je laisse mon appel au fichier .h ?


    Si vous pouviez m'en dire davantage, ce serait hyper-sympa, parce que je nage et je rame ...

  2. #2
    Membre habitué Avatar de PINGOUIN_GEANT
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 149
    Points : 155
    Points
    155
    Par défaut
    .cpp c'est pour le C++
    compiles-tu déjà de la façon suivante ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    gcc hanoi.c -c
    gcc main.c -c
    gcc main.o hanoi.o -o main
    " Tout homme est digne d'un parapluie." Stavroguine dans Les Démons de Dostoïevski.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    460
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2003
    Messages : 460
    Points : 112
    Points
    112
    Par défaut
    En fait, j'emploie la version "windowsée" du Borland C 3.1.

  4. #4
    Membre habitué Avatar de PINGOUIN_GEANT
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 149
    Points : 155
    Points
    155
    Par défaut
    question + générique: as-tu des notions de compilation séparée, modularité...
    parce que je suis étonné de lire que tout est dans un header:
    pour plus d'infos: http://c.developpez.com/tutcpp/c2450.php
    (c et c++ pareils à ce niveau)
    " Tout homme est digne d'un parapluie." Stavroguine dans Les Démons de Dostoïevski.

  5. #5
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 16
    Points : 15
    Points
    15
    Par défaut
    pour creer une librairie c est
    ar cr nomdelalib.a fichier.o
    ranlib nomdelalib.a
    pour la statique

    et
    gcc -c -shared nomdelalib.so fichier .o
    pour la dynamique

  6. #6
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut Re: Création d'une librairie ???
    Citation Envoyé par Mike888
    Bon, une fois n'est pas coutume, j'ai besoin de vos lumières...

    J'ai fini le code d'un programme (jeu des tours de Hanoï). C'est donc un fichier au format .cpp
    C'est donc un programme C++. Les fichier sources de programmes C doivent avoir l'extension .c
    Dans ce fichier, je fais appel (via un #include) à un fichier .h (qui contient des fonctions auxquelles le programme principal fait appel; c'est en fait, un fichier pour l'usage des piles).
    Mauvais plan. Les fichiers .h ne doivent contenir que les déclarations des fonctions (entre autre). Pas de définition de fonctions, ni de variables.

    Un peu de lecture:

    http://emmanuel-delahaye.developpez.com/codage.htm
    Seulement, on m'a conseillé de scinder ce fichier .h en 2 parties:
    - la partie qui contient les prototypes de fonctions reste le fichier .h
    Oui.
    - la seconde partie qui contient le corps des fonctions devrait être compilée de manière à devenir une librairie.
    Pas forcément une bibliothèque (librairie est un anglicisme : library). Tu peux dans un premier temps regrouper les fonctions dans un .c (ou .cpp selon le langage). Tout est expliqué dans le lien que j'ai indiqué au-dessus.

    * Comment est-ce que je dois faire cela ?
    * Au final, quand j'aurai mes 3 fichiers, peuvent-ils se trouver dans le même répertore (ou dois-je placer le .h dans le répertoire Include) ?
    Non. Je recommande une organisation des fichiers comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    projet/src -> fichier sources (.c, .cpp)
    projet/inc -> fichier d'entêtes (.h)
    projet/out -> fichiers de sorties (objets, executables, mapping etc.)
    en principe, ton environnement de développement permet ça.

    Pour les fichier d'entête, je recommande d'indiquer la racine projet : .../projet et de mettre le chemin à partir de cette racine:

    #include "inc/myheader.h"

    Pour les gros projets, un découpage en blocs fonctionnels (BF) est souhaitable :

    .../projet/xxx
    .../projet/yyy
    .../projet/zzz

    chaque BF ayant sa structure inc, src, out.

    le chemin des headers devient alors
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    #include "inc/xxx/myheader.h"
    #include "inc/yyy/myheader.h"
    Les même noms peuvent être utilisés (on a que 8 lettres) et le chemin lève l'ambigüité.
    * Dans mon programme principal, je présume que je laisse mon appel au fichier .h ?
    Le header doit être inclus dans le fichier de définition des fonctions (pour garantir la cohérence), ainsi que dans chaque header ou fichier source qui en a besoin. (Bien lire l'article sur la protection des headers contre les inclusions multiples).
    Pas de Wi-Fi à la maison : CPL

Discussions similaires

  1. Création d'une librairie dynamique avec gcc
    Par ba10 dans le forum Autres éditeurs
    Réponses: 0
    Dernier message: 16/12/2009, 19h20
  2. Réponses: 6
    Dernier message: 17/09/2009, 16h13
  3. Réponses: 1
    Dernier message: 14/03/2008, 09h09
  4. Réponses: 1
    Dernier message: 20/06/2007, 12h34
  5. création d'une librairie dynamique
    Par bilo2000 dans le forum Autres éditeurs
    Réponses: 3
    Dernier message: 26/08/2004, 15h17

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