Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 08/12/2009, à 15:45

arnaud_d

[Résolu] Ulitiser GLib dans un programme C++

Bonjour,

Je me remet doucement au C++ et j'ai découvert l'existence de la bibliothèque GLib en regardant le source de Xpdf.

Au début je ne comprenais pas ce qu'était les Guchar et autres types, mais j'ai fini par comprendre que ça apportait des fonctionnalités très intéressantes et qu'en plus c'était bien parce que ça améliorait la portabilité, c'était GNU, c'était du beau quoi !

Aujourd'hui je souhaite écrire un programme en C++ en reprenant quelques lignes de Xpdf. Je souhaite prendre de bonnes habitudes et je pense que vous allez me dire qu'utiliser la librairie GLib en est une. De toutes façon je n'ai pas le choix si je veux pouvoir récupérer du code de Xpdf.

Seulement voilà, je n'arrive pas à déclarer cette librairie ni même compiler un très simple programme déclarant un Guchar.

J'ai essayé de déclarer glib en faisant un #include <glib> mais ça marche pas.
Je crois avoir lu sur internet qu'il fallait ajouter un flag pour le compilateur. J'ai jamais fait ça et ne comprend pas ce que ça veut dire.

La solution utilisée par Xpdf est d'inclure les fichiers GString, gtypes, GList (.h et .cpp) dans le package du code source et d'y faire appel par des #include "GString.h".
Je trouve ça très bizarre, je croyais qu'il fallait mieux faire appel aux fichiers présents dans /usr/include/glib-2.0...

Enfin je ne serais pas étonné de l'existence d'un moyen très simple de faire ça avec Anjuta (que j'utilise)...

Merci par avance pour l'aide que vous pourrez m'apporter (et à ceux qui auront essayé de comprendre où je veux en venir smile

Arnaud

Dernière modification par arnaud_d (Le 08/12/2009, à 17:06)

Hors ligne

#2 Le 08/12/2009, à 16:39

Karl_le_rouge

Re : [Résolu] Ulitiser GLib dans un programme C++

> Je souhaite prendre de bonnes habitudes et je pense que vous allez me dire qu'utiliser la librairie GLib en est une
Une très bonne habitude à prendre, si tu développes en C. ;-)
La GLib est une bibliothèque C, la plupart des fonctionnalités fournies par la GLib sont disponibles dans la bibliothèque standard C++ (std::string, std::list, etc ...) et l'extension Boost (threads, timers, réseaux, regex etc ...)

> J'ai essayé de déclarer glib en faisant un #include <glib> mais ça marche pas.
Par convention, les entêtes sans extensions sont réservés à la bibliothèque standard, certains framework comme Qt proposent des entêtes de convenance sans extensions mais c'est rare.

> Je crois avoir lu sur internet qu'il fallait ajouter un flag pour le compilateur.
ça n'aurait pas réglé le problème ci-dessus, les "flags" en question servent à donner l'emplacement des fichiers d'entête (les options -I/chemin/entete.h de GCC) de la bibliothèque, les bibliothèques utilisés (-lmalib), l'emplacement des libs (-L/chemin/lib) et les options de compilation nécessaire.
Ici:

gcc machin.cc $(pkg-config glib-2.0 --cflags --libs) -o machin

Tu parles d'utiliser le code de xpdf mais dans quel but ? afficher, traiter des fichiers pdf ? dans ce cas, il serait plus intéressant d'utiliser poppler.


J'oubliais de mentionner l'existence de glibmm un binding C++ de GLib regroupant l'ensemble des fonctionnalités de la GLib non disponible dans la bibliothèque standard C++.

Dernière modification par Karl_le_rouge (Le 08/12/2009, à 17:00)

Hors ligne

#3 Le 08/12/2009, à 17:05

arnaud_d

Re : [Résolu] Ulitiser GLib dans un programme C++

Merci Karl_le_rouge pour ta réponse, ça m'éclaire ! Au fait je n'ai absolument pas besoin de GLib si je fais du C++. C'est chose comprise et enregistrée. On m'avait déjà parlé de Boost pour les regex mais je ne m'en suis pas encore servi. Je commence à comprendre comme tout cela s'articule.

Du coup j'ai remplacé les Guchar par des unsigned char etc. ça devrait marcher.

Je souhaite mieux comprendre le format PDF en apprenant à parser un tel fichier avec un programme C++. Ça me permet de me remettre sur les rails de la lecture de fichier en mode binaire, aux bitwise operations etc.

Je te remercie aussi pour l'explication que tu m'a donnée à propos des flags.

Je vais regarder poppler....

A bientôt !

Hors ligne