Création d'une librairie à partir des .c et .h

Signaler
Messages postés
185
Date d'inscription
samedi 21 mai 2005
Statut
Membre
Dernière intervention
16 juillet 2016
-
Messages postés
6
Date d'inscription
mardi 14 octobre 2008
Statut
Membre
Dernière intervention
24 octobre 2008
-
Bonjour,

J'utilise actuellement une "librairie", ou plutôt ses sources .c et .h, et j'aurai voulus éviter d'inclure les 36 fichiers à chaque projet qui utilise cette librairie. Je souhaiterais donc créer une librairie statique et/ou dynamique à partir de ses fichiers. Malheureusement j'ai pas trouver bcp de tutos qui correspondait à ça, c'est à dire, prendre 15 fichiers existants faits par quelqu'un'un d'autre et qu'il vaut mieux ne pas modifier et créer une librairie. Je ne maîtrise pas tout non plus sur la création et la gestion des librairie dynamique., donc je ne vois pas trop comment faire.

J'ai créer un projet de création de librairie dynamique sous Code::Blocks. J'ai vu que c'était assez simple au final, il suffit apparemment de mettre la déclaration de la fonction dans le "main.h" (example sous code::blocks) et la définition dans le "main.c". Il faut rajouter DLL_EXPORT devant chaque nom de fonction que l'on souhaite exporter, cela pour la déclaration de la fonction amis aussi pour sa définition. Je pense qu'on est d'accord, ou si je dis des bêtises, corrigez moi.

Maintenant, pour exporter les fonctions de ma librairie. Comment faire ?
Je fais un :
#include <mylibrairie_src.h>

mais après ? Pour lui dire de tout exporter ?? Dois-je rajouter un DLL_EXPORT devant toutes les fonctions de .h et .c, c'est à dire, dois-je modifier les sources ???? ce n'est pas une idée qui me plait...
N'y a-t-il pas moyen de lui dire d'exporter toutes les fonctions de mes .h et .c sans les modifier ? Ou alors, je dois recopier à la main tous les prototypes et définition des fonctions que je veux exporter dans les fichiers main.h et main.c pour y ajouter le DLL_EXPORT sans toucher aux sources ?

Merci

RV

L'intelligence est la chose la mieux répartie chez l'homme, car quoi qu'il en soit pourvu, il a toujours l'impression d'en avoir assez. "Descartes"

1 réponse

Messages postés
6
Date d'inscription
mardi 14 octobre 2008
Statut
Membre
Dernière intervention
24 octobre 2008

Salut,
   Pourquoi ne pas créer un librairie statique... Les dll, ne fonctionnent que pour windows, donc reste à savoir le but de ta bibliothèque... Si c'est une application portable, oublies les dll...
   Je ne connais pas bien code::blocks( je commence avec...) mais je pense que le principe pour créer une librairie statique est le même quel que soit l'IDE...
  Ton IDE doit te permettre de créer un projet static lib. Ensuite, tu vires ton main(...), tu compiles et tu doit normalement obtenir un fichier avec l'extension .a (.lib avec visual c++).
   Lorsque tu voudras utiliser ta librairie, penses à préciser:

       -le chemin de ta librairie au compilateur.
       -le chemin des includes de ta librairies.
       -à lier ta librairie à ton projet .

    Jusqu'à aujourd'hui je travaillais sous dev-cpp, mais je me penche sur code::blocks et visual c++ 2008 express.

    Je te donnerais la marche à suivre détaillée pour code::block bientôt, bien que j'imagine qu'il a y beaucoup de personne ici qui connaissant   l'IDE, vont te répondre...

a++