Source : ct|23.04.08
< Tutoriels Informatique, Multimédia, Chinois
Une librairie statique (extension .a ou .lib) est un fichier contenant des fonctions qui seront intégrées à l'exécutable après la phase d'édition des liens. A l'inverse une librairie dynamique (extension .dll) est un fichier contenant des fonctions qui ne seront pas intégrées à l'exécutable après la phase d'édition des liens; dans ce cas, l'exécutable appelera la librairie DLL pendant l'exécution pour obtenir les fonctions souhaitées.
Dans le présent tutoriel, nous allons apprendre à créer puis à utiliser une librairie statique en C. Ensuite nous l'utiliserons dans un programme C++. Pour effectuer ce travail, nous utiliserons l'environnement de développement GNU GPL (freeware) Code::Blocks. Les environnements de développement DevCpp ou Visual Studio C++ permettent d'obtenir le même résultat, en procédant de la même façon.
Lancez CodeBlocks et créez un nouveau projet de type "Static Library" (File/New/Project/Static Library/Go).
Donnez un nom à votre projet ("malibrairie" par exemple), et attribuez-lui un répertoire de destination ("C:/essai" par exemple).
Effacez ce qui se trouve par défaut dans le fichier source "main.cpp" de la librairie, et saisissez le code suivant. Ce code correspondant à une fonction exemple simple qui multiplie par 5 un nombre dont l'adresse lui est passée en paramètre.
void cinq(int *i)
{
int n;
n=*i;n=5*n;
*i=n;
}
Cliquez l'option de menu "Build/Run".
Aussitôt CodeBlocks fabrique le fichier librairie dans le répertoire "C:/essai/malibrairie" et lui donne le nom "libmalibrairie.a".
Vous pouvez remarquer que CodeBlocks et DevCpp donnent une extension ".a" aux librairies, alors que Visual Studio leur donne une extension ".lib". Cela ne pose pas de problème.
Nous allons maintenant utiliser depuis un programme C++ la librairie "libmalibrairie.a" que nous venons de créer.
Créez un nouveau projet de type "Win32 GUI".
Choisissez une application de type "Frame based".
Donnez lui un nom ("monprogramme" par exemple) et un répertoire de destination (C":/essai" par exemple).
Effacez le code présenté par défaut, dans le fichier "main.cpp" de ce nouveau projet, et placez-y le code suivant qui est beaucoup plus court et amplement suffisant pour tester notre librairie:
#include "windows.h"
extern "C" void cinq (int *);
int APIENTRY WinMain(HINSTANCE h1,HINSTANCE h2,LPSTR l,int n)
{
int x;
char texte[80];
x=2;
cinq(&x);
wsprintf(texte,"%d",x);
MessageBox(NULL,texte,"",MB_OK);
return 0;
}
A priori CodeBlocks ne connaît pas le fichier librairie utilisé, ni son emplacement. Il faut donc le lui déclarer de façon à ce qu'il puisse effectuer la compilation et l'édition des liens sans afficher d'erreur. Pour cela, sélectionnez l'option de menu "Project/Build options/Linker Settings" et ajouter au projet, dans la fenêtre "link libraries:" le chemin de votre fichier librairie "libmalibrairie.a" puis cliquez "OK".
Cliquez "Build/Build and run". La compilation et l'édition des liens s'effectuent, en intégrant dans l'exécutable les fonctions nécessaires et présentes dans la librairie statique. Puis votre programme s'exécute. On obtient bien 5x2=10... Les choses fonctionnent correctement.
© http://turrier.fr (2007) |