Retourner aux forums || Retourner au forum Programmation.c

Programmation.c : bibliothèque gd, "undefined reference to"

Posté par Étienne Bersac (Jabber id, page perso, ) le 24 octobre 2004
0
Bonjour à tous, Je suis noob en C, je voudrait générer une vignette d'un image. J'ai choisit GD pour ceci, mais si gandalf ou autre serait plus adéquat, je suis ouvert à toute proposition. en tout cas, substentiellement, le code à une tronche comme celle ci : #include <gd.h> ... int mafonc(char *image) { char vignette[] = ".cache/vignette"; gdImagePtr gd_img, gd_vign; FILE *img; FILE *vign; img = fopen(image, "r"); vign = fopen(vignette, "w"); gd_img = gdImageCreateFromPng(img); fclose(img); ... gdImageDestroy(gd_img); return (0); } Mais voila, j'ai toujours la même erreur avec make :
Undefined reference to: gdimageCreateFromPng
D'où vient ce problème ? Que faire ? j'ai pourtant installer les paquet debian (sid) libgd2-xpm et libgd2-xpm-dev. Merci

--
E Ultreïa !
> Lire le message (11 commentaires, moyenne: 1,4).  

Cette discussion est archivée, il n'est plus possible de laisser des commentaires.

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.

Le code en plus propre

Posté par Étienne Bersac (Jabber id, page perso, ) le 24/10/2004 à 12:49. (lien). Évalué à 1.

Désolé pour le code mal encadré (pas les bonne balise)...

#include <gd.h>
...
int mafonc(char *image) {
char vignette[] = ".cache/vignette";

gdImagePtr gd_img, gd_vign;
FILE *img;
FILE *vign;

img = fopen(image, "r");
vign = fopen(vignette, "w");

gd_img = gdImageCreateFromPng(img);
fclose(img);
...
gdImageDestroy(gd_img);
return (0);
}

--
E Ultreïa !

convert

Posté par Krunch (Jabber id, page perso, ) le 24/10/2004 à 13:38. (lien). Évalué à 2.

T'as vraiment besoin de faire ça en C ? Ca dépend de ce que tu veux faire mais si tu as installé ImageMagick, un simple "convert foo.png -resize 100x100 foo-small.png" devrait marcher sans problème.

--
Free Softwares Users Group Arlon (Sud Luxembourg, Belgique)
pertinent, e adj. Approprié ; qui se rapporte exactement à ce dont il est question.
  • [^]Re: convert

    Posté par Étienne Bersac (Jabber id, page perso, ) le 24/10/2004 à 14:04. (lien). Évalué à 1.

    Mon but, c'est d'apprendre le C. :)

    --
    E Ultreïa !

Et la lib gd ?

Posté par Gyro Gearllose () le 24/10/2004 à 14:14. (lien). Évalué à 1.

Tu indiques comment à make qu'il faut s'en servir pour lier ton programme ?
As-tu essayé tout simplement un gcc -o truc -Llibgd truc.c ?
Je ne suis absolument pas sûr du -Llibgd, c'est peut-être -Lgd. A essayer en tout cas....

--
All articles which are excluded shall be deemed included
Tous les articles exclus sont considérés inclus
--Brian de Palma in Phantom of the Paradize
  • [^]Re: Et la lib gd ?

    Posté par durandal () le 24/10/2004 à 14:19. (lien). Évalué à 2.

    Oui, c'est ça, il manque un paramètre : gcc truc.c -lgd -o truc

  • [^]Re: Et la lib gd ?

    Posté par Krunch (Jabber id, page perso, ) le 24/10/2004 à 14:19. (lien). Évalué à 2.

    C'est peut-être même un l minuscule.

    --
    Free Softwares Users Group Arlon (Sud Luxembourg, Belgique)
    pertinent, e adj. Approprié ; qui se rapporte exactement à ce dont il est question.
  • [^]Re: Et la lib gd ?

    Posté par Étienne Bersac (Jabber id, page perso, ) le 24/10/2004 à 14:25. (lien). Évalué à 1.

    euh, j'utilise anjuta, comment peut-on demander à anjuta cette option ?
    l'option est bien -lgd

    déjà merci !

    --
    E Ultreïa !
    • [^]Re: Et la lib gd ?

      Posté par Étienne Bersac (Jabber id, page perso, ) le 24/10/2004 à 15:04. (lien). Évalué à 0.

      j'ai édité les makefile, mais je trouve ça pas propre. Si quelqu'un sait comment gérer ça avec Anjuta, je suis preneur.

      Encore merci.

      --
      E Ultreïa !
  • [^]Re: Et la lib gd ?

    Posté par Étienne Bersac (Jabber id, page perso, ) le 24/10/2004 à 14:58. (lien). Évalué à 0.

    J'aurai aussi une petite question si tu me permet : pourquoi le #include <gd.h> ne suffit -il pas ???

    --
    E Ultreïa !
    • [^]Re: Et la lib gd ?

      Posté par Gyro Gearllose () le 24/10/2004 à 15:27. (lien). Évalué à 2.

      Ce n'est pas le même objectif :
      #include <gd.h>
      sert à dire au compilateur d'insérer le contenu de gd.h à cet endroit de ton fichier source avant de le compiler, point. Ca permet d'avoir les définiitions des fonctions (leur prototype), et les définitions éventuelles de macros, constantes globales, variables globales, etc.
      En aucun cas, ça n'indique à l'éditeur de lien qu'il faut préciser telle ou tell autre adresse lors de l'appel de telle ou telle fonction.
      Pour résumer :
      #include <gd.h>
      Ca permet au compilo de lire gd.h avant le reste du source, et de vérifier que lorsque tu as tapé gdImageCreateFromPng (image), tu l'a "orthographié" correctement, avec les bonnes variables du bon type.
      Le -lgd, puisque c'est ça la bonne verison, sert à ld (c'est lui qui accomplit cette tâche) de point d'entrée pour trouver les références externes dont il ignore l'emplacement.
      Voilà, j'espère avoir été clair, et surtout n'avoir pas trop dit de clowneries.

      --
      All articles which are excluded shall be deemed included
      Tous les articles exclus sont considérés inclus
      --Brian de Palma in Phantom of the Paradize
      • [^]Re: Et la lib gd ?

        Posté par Étienne Bersac (Jabber id, page perso, ) le 25/10/2004 à 17:04. (lien). Évalué à 0.

        oki, j'ai compris. Merci

        --
        E Ultreïa !

Revenir en haut de page || Retourner aux forums || Retourner au forum Programmation.c