[C++] LibSimpleWeb, des requetes HTTP simples
|
29-03-2012, 14h56
(Modification du message : 08-12-2012, 16h36 par Dobry.)
Message : #1
|
|
Dobry
Tueur de lamouz Messages : 206 Sujets : 25 Points: 73 Inscription : Aug 2011 |
[C++] LibSimpleWeb, des requetes HTTP simples
Dans ce semi tutoriel, qui me permettra par la même occasion de vous présenter une librairie très simple que j'ai codé pour faire des requetes web en C++, nous verrons comment créer une bibliothèque partagée (shared library).
Je suis sur Gnu/Linux et je ne developperais que cette aspect car c'est le seul que je connaisse. Déjà, qu'est ce qu'une "Shared Library" ? - Ce sont des bibliothèque qui sont chargés par le programme lors de son lancement, en d'autres termes, un programme nécéssitant une bibliothèque de ce type ne pourra fonctionner que si elle est installée sur le système. - Ainsi ces bibliothèques sont idépendantes du programme, ce qui rend l'éxécutable plus léger (contrairement à une compilation statique par exemple). Comment on crée une "Shared Library" ? Nous verrons d'abord comment faire en utilisant g++ pour compiler une bibliothèque codée en C++, puis nous verrons comment faire pour en compiler une en C avec gcc (en réalité les commandes sont EXACTEMENT les mêmes). La particularité lorsque l'on commence à coder une bibliothèque pour le système c'est qu'il n'y a pas de fonction main() mais uniquement des fonctions qui seront ensuite appellées, il va donc nous falloir deux fichiers, que nous appellerons "simpleweb.h" et "simpleweb.cpp", un qui est le header et l'autre la source. Attaquons nous d'abord au header (.h) Les lignes suivante nous permettrons Code CPP :
#ifndef SIMPLEWEB_H Nous allons maintenant nous attaquer au prototypes des fonctions de notre bibliothèque, voici celles que je vais vous présenter : Code CPP :
Mais pour pouvoir utiliser les différents types de données et prototypes suivants, nous devons également déclarer les lib que l'on doit inclure : Code CPP :
Attaquons nous maintenant au contenu de ces fonctions dans simpleweb.c, dans lequel nous avons besoin d'uniquement un include qui est : #include "simpleweb.h", car les autres sont définis dans simpleweb.h Voici ensuite le contenu des fonctions (utilisant libCurl), j'ai essayé de commenter au maximum mais si des éléments vous échappent n'hésitez pas à me demander des explications : Code CPP :
Voici pour les fonctions qui se trouvent dans notre simpleweb.c, il va falloir maintenant nous attaquer à la compilation de la bibliothèque à l'aide de g++ g++ -fpic -c simpleweb.c On obtient maintenant un simpleweb.o g++ -shared -o libsimpleweb.so simpleweb.o Le nom du fichier de la shared library doit être sous la forme lib*.so Maintenant, nous allons proceder de façon un peu brutal mais efficace pour installer notre bilbiothèque sur le système, cp libsimpleweb.so /usr/local/lib cp libsimpleweb.so /usr/lib Et puis pour le header cp simpleweb.h /usr/local/include cp simpleweb.h /usr/include Voilà normalement cela devrait fonctionner, nous allons maintenant essayer un programme test pour voir si la bibliothèque fonctionne réellement : Code CPP :
Pour compiler, on utilise : g++ testweb.cpp -o test -lsimpleweb -lcurl Ma bibliothèque nécéssite libCurl je dois donc également fournir ce flag pour la compilation, et sinon, le flag est le nom de votre bibliothèque sans le "lib" devant et le ".so". Si quelque chose est peu clair ou faux, n'hésitez pas à me contacter pour que je le corrige.
Aestuārium Erudītiōnis
There are only two hard things in Computer Science: cache invalidation, naming things, and off-by-one errors.
|
|
« Sujet précédent | Sujet suivant »
|
Sujets apparemment similaires… | |||||
Sujet | Auteur | Réponses | Affichages | Dernier message | |
[C] Un mini-serveur HTTP | -Moloch- | 11 | 698 |
19-04-2013, 14h22 Dernier message: notfound |
|
[C++] Requéte http | oxame | 3 | 271 |
02-11-2012, 20h28 Dernier message: oxame |
Utilisateur(s) parcourant ce sujet : 1 visiteur(s)