Une bug en c

sofi -  
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Je me permet de vous demander de l'aide car voila 3 jours que je but sur un problème (qui ne doit pas en être un) lors de l'utilisation de cairo avec GTK+.

Mon problème est le suivant:

J'ai un défaut "undefined reference to 'gdk_cairo_create' " lors de la compilation de mon code ci dessous:
expose_evt_reaction( GtkWidget *widget, GdkEventExpose *event, gpointer data )
 {
   // c'est la structure qui permet d'afficher dans une zone de dessin
   // via Cairo
   cairo_t* cr ;
   cr=gdk_cairo_create(widget->window);
   cairo_set_source_rgb (cr, 1, 1, 1); // choisit le blanc.
   cairo_paint( cr ); // remplit tout dans la couleur choisie.

   cairo_set_source_rgb (cr, 0, 1, 0);
   cairo_rectangle (cr, 50, 50, 100, 100 );
   cairo_fill_preserve( cr ); // remplit la forme actuelle (un rectangle)

   cairo_set_line_width(cr, 3);
   cairo_set_source_rgb (cr, 0, 0.5, 0);
   cairo_stroke( cr ); // trace la forme actuelle (le même rectangle)

   // On a fini, on peut détruire la structure.
   cairo_destroy (cr);
   return TRUE;
 }

Quelqu'un pourrait-il éclairer ma lanterne?

Merci d'avance.
sinon
alors comment je peux ajouter lib gdk-win32-2.0"?

2 réponses

Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
Bonjour, en général ce genre d'erreur viens du fait que tu oublies d'ajouter une bibliothèque lors de l'édition des liens. Il ne trouve pas la fonction.
En ce qui concerne la façon d'ajouter la bibliothèque lors de la compilation, ça dépend de comment tu compile et du compilateur.
0
sofi
 
moi j'utilise le code block , et j'ai déclaré la bibliothèque include<gdk/gdkcairo.h> mais toujours il ne trouve pas la fonction je ne sais pas pourquoi ?
0
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
parqu'il faut lier avec.
donc un "-lgdkcairo" dans les options de lien (en supposant que tu compile avec gcc).
tu dois avoir quelque part un fichierlibgdkcairo.a ou un truc dans le genre.
0
sofi
 
alors moi je programme en c et j'ai fait les étapes suivante pour inclure ma bibliothèque
prject puis build option puis linker setting et j'ai ajouté cairo mais il y a rien changé?!! est ce que vous avez une explication s'il vous plait
0
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
pour être sur, il faut regarder les lignes de compilation.
voir ce qui a été ajouté. Et trouver exactement la bonne bibliothèque. Peut être faut il en inclure plusieurs même.
avec l'utilitaire nm, tu peut regarder les différentes entrées des bibliothèques et voir s'il y a la fonction que tu cherches.
0