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 :

Inclure une librairie


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2013
    Messages : 12
    Par défaut Inclure une librairie
    Bonjour à tous,

    Je viens d'apprendre les bases du C++ et j'aurais aimé utiliser des librairies externes offrant de nouvelle fonctionnalité. Après plusieurs recherches, je suis toujours "bloqué" sur la manière d'ajouter une librairie à un projet.

    Ayant développer en Java, je ne retrouve pas les même mécanisme qui permettent d'ajouter une bibliothèque. Je me tourne donc vers vous, si vous pouvez m'éclairer à ce sujet, je vous serais grandement reconnaissant.

    Prenons l'exemple de cette librairie : RESTBED qui permet de réaliser du REST en c++. Pour moi, les étapes pour ajouter la lib dans mon projet sont les suivantes :

    _ Dezippe l'archive
    _ Placer le dossier dans la racine du projet
    _ Ensuite ?

    Malgré plusieurs recherches, je n'arrive pas à comprendre la façon de faire.


    Je vous remercie pour vos réponses

  2. #2
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    Passer des bases à REST, c'est un grand pas, mais si tu t'en sens l'audace, pourquoi pas.

    En C++, il y a plusieurs sortes de bibliothèques:
    1. Les bibliothèques dites "header only", c'est à dire seulement constitutées d'en-têtes. C'est le cas de la majorité de boost, et de la STL (qui est automatiquement intégrée).
    2. Celles écrites en C++ (ou en C), et destinée à une liaison statique (pour les linux, le fichier est un .a)
    3. Les bibliothèques partagées (shared), celles-ci sont liées dynamiquement (libtruc.so), au lancement du programme.
    4. et enfin, les biblothèques dynamiques, chargées manuellement par le programme. C'est une façon de faire de concevoir un système de plug-ins.

    Ajoutons le code que je qualifie de "volé", qui n'est autre qu'un copié collé du code source de la bibliothèque, et inséré dans le code de l'application.
    C'est en général illégal, risqué vis-à-vis des mises à jours de sécurtié, et je n'en parlerai pas plus.

    Le cas 4, enfin, est très particulier, et ne te concerne pas (encore?).

    La première forme est très simple à utiliser, il suffit d'indiquer au moment de la compilation le dossier où trouver l'en-tête. C'est le role des options de chemins d'include (telle que -I pour gcc).
    Les cas 2 et 3 sont similaire à la compilation: il faut donner le chemin des en-têtes permettant d'utiliser le code (comme pour 1), mais aussi le chemin de liaison.
    Dans le cas 3, il faut toute fois veiller à ce que la bibliothèque soit trouvable à l'exécution (à coté de l'application, par exemple)

    Tu noteras que le cas 1 fonctionne exactement comme du code volé, il n'y a pas d'installation de la bibliothèque à faire une fois compilée.

    Dans tous les cas, tu dois installer la version de développement de la bibliothèque pour compiler ton programme. Pour linux, ce sont les packages de type libtruc-dev, pour windows, les versions SDK, à voir sur le site de chaque bibliothèque.

  3. #3
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2013
    Messages : 12
    Par défaut
    J'ai choisi la librairie REST pour avoir un exemple d'intégration de bibliothèque, simplement.

    Pour avoir fait plusieurs essais avec différentes librairies, je ne trouve pas toujours les fichiers se terminant par .a ou .so.

    La difficulté est d'autant plus grande que je suis sous Mac depuis peu, de plus, je travaille avec CodeBlocks.

    Aurais-tu un exemple de bibliothèque "simple" qui me permettrait de visualiser plus simplement ce que tu m'as expliqué.


    Merci pour ta réponse

  4. #4
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    Un peu toute, en fait. libcurl ou libxml2, par exemple, ou bien des bibliothèques liées à un format de fichier, comme libpng ou libbmp

    Je ne connais pas Mac OS, je ne saurai t'aider plus que ca.

  5. #5
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2013
    Messages : 12
    Par défaut
    Donc sous CodeBlocks, si je procède de la sorte, devrais-je être capable d'utiliser les header de la bibliothèque :

    _ Telecharger & extraire la lib
    _ Clic droit sur le projet --> Build options
    _ Search directories - Compiler
    _ Ajouter le dossier
    _ Search directories - Linker
    _ Ajouter le dossier

    A partir de ce moment là, à la compilation, j'obtiens bien les lignes lues dans d'autres sujets :

    g++ -Wall -fexceptions -g -I/Users/me/Downloads/libxml -c /Users/me/Desktop/Projects/Library/main.cpp -o obj/Debug/main.o
    g++ -L/Users/me/Downloads/libxml -o bin/Debug/Library obj/Debug/main.o

    Merci pour tes renseignements

  6. #6
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    C'est bien, mais les chemins à mettre sont en général -I/Users/me/Downloads/libxml/include et -L/Users/me/Downloads/libxml/lib

Discussions similaires

  1. Réponses: 4
    Dernier message: 02/02/2010, 20h35
  2. Probleme pour inclure une librairie
    Par tmanta7 dans le forum Qt
    Réponses: 2
    Dernier message: 26/05/2009, 15h58
  3. inclure une librairie .h à un projet
    Par nac dans le forum MFC
    Réponses: 3
    Dernier message: 09/03/2006, 16h51
  4. [JAR] Inclure une librairie dans un point jar
    Par Orionmel dans le forum Général Java
    Réponses: 5
    Dernier message: 08/11/2004, 22h25
  5. inclure une librairie *.lib
    Par darkbm dans le forum C
    Réponses: 2
    Dernier message: 16/12/2002, 22h48

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