IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques Discussion :

Magick++


Sujet :

Bibliothèques

  1. #1
    Futur Membre du Club
    Inscrit en
    Avril 2005
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 17
    Points : 6
    Points
    6
    Par défaut Magick++
    Salut les amis,

    Tout d'abord, comme je suis nouvelle, jme présente : Audrey, je suis étudiante en D.E.A. et je bosse sur le rendu non-photoréaliste. Je souhaiterai utiliser la bibliothèque Magick++ dans un programme que j'ai déjà développé en partie. J'ai déjà utilisé Magick++ et je sais que pour construire une image RGB, on envoie l'instruction :
    Image image(Geometry(WIDTH, HEIGHT) , ColorRGB(0.,0.,0.));
    Or, pour une raison qui m'échappe, dès que l'éxecution atteint cette instruction,mon programme plante!
    Quelqu'un sait il pourquoi???

    Bon courage à tous, et à bientôt!

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2005
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 15
    Points : 14
    Points
    14
    Par défaut
    Peux tu nous donner plus de details ? (os, compilateur...)
    et le meux serait un exemple de programme.

    sinon tu as bien penser a initialiser ImageMagick :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
        #include <stdio.h>
        #include <stdlib.h>
        #include <string.h>
        #include <magick/api.h>
     
        int main(int argc,char **argv)
        {
     
         /*
            Initialize the image info structure and read an image.
         */
        InitializeMagick(*argv);
        ...
        return 1;
        }
    Ces un exemple pour ImageMagick avec l'api C qui est aussi valable avec Magick++

    Luther

  3. #3
    Futur Membre du Club
    Inscrit en
    Avril 2005
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 17
    Points : 6
    Points
    6
    Par défaut
    Salut Luther!

    Voilà, en fait, le programme initial sur lequel je travaille a été compilé avec un Makefile généré automatiquement avec un Makerule et un Makedef. Ce makefile est un peu trop compliqué pour que je le refasse entièrement. J'ai donc du le modifier pour utiliser mon programme avec ma Magick++.

    J'ai tout d'abord essayé d'insérer le chemin des headers et des library Magick++ dans ce Makefile pour lier ce programme avec Magick++. Des problèmes étranges sont survenus à la compilation (liés à la compilation de cmath.h!), et je me suis trouvée obligée de copier dans le repertoire de mon programme les fichier .h de magick++ et le fichier Magick++.dll.a.. La compilation se déroule bien, mais je ne peux pas créer d'objet Image !

    Je travaille avec Cygwin sous Windows et j'utilise g++.
    Je viens d'essayer InitializeMagick mais ça fait planter mon programme exactement comme les autres instructions Magick++!

    Merci pour ton aide

    Audrey

  4. #4
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 750
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 750
    Points : 10 670
    Points
    10 670
    Billets dans le blog
    3
    Par défaut
    Tu n'es pas assez pécise:
    http://c.developpez.com/faq/cpp/?pag...ALITE_probleme
    Quel type de plantage ? Que dit le débogueur ?

  5. #5
    Futur Membre du Club
    Inscrit en
    Avril 2005
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 17
    Points : 6
    Points
    6
    Par défaut
    Le programme prend 99% du processus et je n'ai plus de contrôle jusqu'à ce que Windows me propose d'envoyer un rapport d'erreur. Généralement, cela se produit avec une erreur de segmentation mais là je ne vois pas d'où elle pourrait venir.

    Avec le déboggeur gdb, le programme tourne àl'infini.
    Avec une execution pas à pas, j'ai localisé l'erreur dans :
    0x00449f36 in done () at /usr/include/c++/3.3.3/bits/stl_iterator.h:592
    soit la fonction : _alloca()

    J'ai tenté de réduire ma fonction main à la fonction :
    int main(int argc, char *argv[])
    { InitializeMagick(*argv);
    Image image("une_image_quelconque.gif");}

    Ces instructions parviennent à planter le programme.

    C'est pourquoi j'ai soupconné que cela ne venait pas de mon programme, mais de l'usage que je fais de la bibliothèque.

  6. #6
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 275
    Points : 10 985
    Points
    10 985
    Par défaut
    C'est vraiment valide ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    InitializeMagick(*argv);
    ?
    Je ne connais pas la bibliothèque, mais cela ne m'empêche pas de trouver ça louche. En plus, je ne vois rien de tel dans http://www.imagemagick.org/Magick++/Image.html.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2005
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 15
    Points : 14
    Points
    14
    Par défaut
    [url]a priori, l'exemple que j'ai donné etait valable pour l'utilisation de l'API C mais pas C++.

    Pour de details sur l'exemple que j'ai donné :
    http://www.imagemagick.org/script/magick-core.php

    Luther

  8. #8
    Futur Membre du Club
    Inscrit en
    Avril 2005
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 17
    Points : 6
    Points
    6
    Par défaut
    Effectivement, je n'avais jamais utilisé InitializeMagick avant que tu ne m'en parle. L'exemple que tu fournis utilise Magick.h et non Magick++.h comme moi. Quoiqu'il en soit, le problème ne vient pas de là puisque

    int main(int argc, char *argv[])
    {Image image("une_image_quelconque.gif");}

    et

    int main(int argc, char *argv[])
    { InitializeMagick(*argv);}

    plantent de la même façon...

    Vous pensez vraiment que ça ne peut pas venir de ma bidouille avec les liens vers les headers et la bibliothèque (voir mon message précédent)? En effet s'il y avait un problème de cet ordre, ça serait étrange que ça compile quand même, mais comment expliquez vous qu'une seule instruction telle que celle là plante mon programme?

    Merci pour votre aide,

    Audrey

  9. #9
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 275
    Points : 10 985
    Points
    10 985
    Par défaut
    ImageMagic a bien été compilée pour la même version de GCC (mode cygwin) que celle que tu utilises ?
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  10. #10
    Futur Membre du Club
    Inscrit en
    Avril 2005
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 17
    Points : 6
    Points
    6
    Par défaut
    Désolée d'avance pour la suite, je ne suis pas experte dans ces problèmes de liens et de compatibilité...

    J'utilise Magick++ et g++, j'espère que j'ai bien compris ta question...

    Voilà, j'ai déjà utilisé Magick++ exactement dans les mêmes conditions sans problèmes. Sauf que là, j'utilise aussi la bibliothèque trimesh2 qui compile avec l'option -mno_cygwin. Ca vient peut etre de là d'après ce qu'on m'a dit au boulot (de façon très evasive) alors j'ai cherché une bibliothèque Magick++ pour Windows... j'ai placé les fichiers .lib, .h et .dll là où il me semblait bon dans mon dossier, et j'ai essayé de compiler avec l'option -mno_cygwin, sans succès... J'ai une erreur à la compilation provenant du fichier types.h dans le dossier magick++.

    S'il vous plaît, dites moi :
    - si vous pensez que mon problème vient de là...
    - si oui, si vous avez déjà reussi à compiler avec g++ et à utiliser Magick++ sous cygwin avec l'option -mno_cygwin... et si oui, comment?
    - si ça vient de là, dites moi aussi où je peux trouver des bons tutoriaux de Linux, de système et de truc machin chose, afin d'en finir une bonne fois pour toute avec ces ennuis auxquels je ne comprends rien...
    - pourquoi on apprend pas ça à l'école???
    - si ça vient pas de là, connaissez vous une bibliothèque rapide à prendre en main pour importer rapidement des images et les créer sous cygwin..?
    J'espère que je n'en viendrai pas là...

    Merci pour votre aide,
    Bon week end à tous, et à bientôt!


    Audrey

  11. #11
    Futur Membre du Club
    Inscrit en
    Avril 2005
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 17
    Points : 6
    Points
    6
    Par défaut
    Pardon, j'ai oublié de préciser que l'erreur de compilation de types.h vient d'un arobase que le compilateur ne comprends pas... cette partie du code est pourtant destinée à Linux, d'après les commentaires, mais le compilateur ne fait pas le tri...

  12. #12
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 275
    Points : 10 985
    Points
    10 985
    Par défaut
    Il ne faut pas mélanger le mingw (-mno-cygwin) et le cygwin (par défaut). C'est un fait -- on peut s'en sortir dans les angles, mais j'avais retenu plus de complexité qu'autre chose.

    Il faudrait que toutes les bibliothèques que tu utilises et que les programmes que tu compiles soient compilés de la même façon.

    Je ne peux pas te dire mieux que regarder si tu n'a pas une option dans le ./configure (d'image magick) pour forcer le mode mingw, ou alors de recompiler trimesh2 pour cygwin.
    N'utilise pas de binaires que tu as pu récupérer tous prêts. Ou alors prends les pour ta version de GCC et pour le mode que tu as choisi.

    En général, les outils *nix, que l'on trouve sur le net (!), se compilent avec la séquence magique:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ./configure --les-options-qui-me-plaisent
    make
    make install

    PS: on est déplaçables dans le forum outils.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  13. #13
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 750
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 750
    Points : 10 670
    Points
    10 670
    Billets dans le blog
    3
    Par défaut
    Soit tu as un problème de mauvaise utilisation de Magick++ et alors c'est pas très grave, soit c'est un problème de link / incompatibilités dll / ... et là, il faut une (très) bonne connaissance des mécanismes en jeux pour s'en sortir, et encore...
    Tu n'est pas seule apparement, essaye de te faire aider.
    Tu parles aussi de .lib, mais g++ n'utilise pas de .lib, alors que VC++ oui. Tu tentes peut être d'utiliser une version compilée pour VC++. Le mieux est comme te le dit Luc de tout recompiler avec ton compilo à toi.

Discussions similaires

  1. Documentation image magick
    Par rigolman dans le forum Bibliothèques et frameworks
    Réponses: 17
    Dernier message: 18/06/2009, 11h30
  2. Perl et Image::Magick
    Par stoyak dans le forum Modules
    Réponses: 1
    Dernier message: 25/08/2006, 14h11
  3. Utilisation de Image::Magick
    Par LE NEINDRE dans le forum Modules
    Réponses: 2
    Dernier message: 18/05/2006, 15h13
  4. Problème XML::Simple & image::Magick
    Par rori dans le forum Modules
    Réponses: 5
    Dernier message: 17/05/2006, 17h02
  5. [Image] Gif animé avec image magick
    Par rigolman dans le forum Bibliothèques et frameworks
    Réponses: 10
    Dernier message: 20/10/2005, 17h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo