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

Interfaces Graphiques Perl Discussion :

Problème script Perl Gtk2 -> .exe standalone


Sujet :

Interfaces Graphiques Perl

  1. #1
    Membre du Club
    Homme Profil pro
    Ingénieur bioinformaticien
    Inscrit en
    Avril 2010
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur bioinformaticien
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2010
    Messages : 139
    Points : 49
    Points
    49
    Par défaut Problème script Perl Gtk2 -> .exe standalone
    Bonjour.

    Je suis étudiant en bioinformatique et j'aurais besoin d'un peu d'aide concernant un projet.

    J'ai écrit un script en Perl utilisant Gtk2 pour l'interface graphique et d'autres modules (GD::Graph).

    On me demande de réaliser cette application de manière à avoir uniquement un exécutable (.exe) standalone (sans avoir à installer quoi que se soit pour l'utiliser) qui sera utilisé sur des machines Windows.

    1 - Selon vous, est-ce possible ? Ou bien il faudra à un moment ou à un autre installer Gtk2 ou Perl sur les machines utilisant l'application ?

    2 - Comment créer mon .exe contenant tous les modules nécessaires ?

    J'ai essayé de générer un .exe à partir de mon script à l'aide de PAR :: Packer (pp). Mon .exe a bien été généré cependant je pense que les modules utilisés par le script n'ont pas été ajouté à l'exécutable.
    Quand j'essaie de lancer mon application, j'ai le message suivant qui s'affiche :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "Le point d'entrée de procédure g_ascii_strtoll est introuvable dans la bibliothèque de liens dynamiques libglib-2.0-0.dll."
    Faut-il ajouter les modules nécessaires manuellement dans la ligne de commande servant à générer mon .exe ? Car j'ai seulement utilisé cette commande :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pp -o testData.exe Data.pl -v
    En vous remerciant, et en vous souhaitant une bonne année 2012 !

  2. #2
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 499 184
    Points
    499 184
    Par défaut
    Bonjour,

    Quelle version des modules PAR et PAR::Packer utilisez-vous ?
    Sous quel OS travaillez-vous et quelle est votre version de Perl ?
    Avez-vous lu cet article ?

  3. #3
    Membre du Club
    Homme Profil pro
    Ingénieur bioinformaticien
    Inscrit en
    Avril 2010
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur bioinformaticien
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2010
    Messages : 139
    Points : 49
    Points
    49
    Par défaut
    Bonjour.

    Voici les versions des modules :

    Perl : v5.10.1
    PAR : 1.005
    PAR :: Packer : 1.012

    Je développe sous Windows 7.

    J'ai essayé d'utiliser PAR :: Packer mais j'ai le message suivant qui s'affiche lorsque j'essaie de compiler un exécutable :

    Packing DataAnalyzer.pl
    Generating a fresh 'parl'.
    Failed to extract a parl from 'PAR::StrippedPARL::Static' to file 'C:/Users/Matt/AppData/Local/Temp/parlpPjMf15.exe' at C:/Perl/site/lib/PAR/Packer.pm line 1169, <DATA> line 1.
    J'avais donc essayé de compiler mon exécutable avec Perl2Exe.
    Cependant j'ai le message précisé dans mon premier post.

    J'ai trouvé le fichier libglib-2.0-0.dll sur mon DD dans le dossier C:/GTK/bin/, je l'ai donc copié et collé dans le même répertoire que mon exécutable généré avec Perl2Exe.
    Le message d'erreur a alors changé, me précisant alors que le point d'entrée introuvable se situait cette fois sur le fichier p2x5101.dll qui est présent dans le répertoire de perl2exe. J'ai essayé de le coller dans le répertoire de mon exécutable généré avec perl2exe mais le message d'erreur persiste.

  4. #4
    Membre du Club
    Homme Profil pro
    Ingénieur bioinformaticien
    Inscrit en
    Avril 2010
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur bioinformaticien
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2010
    Messages : 139
    Points : 49
    Points
    49
    Par défaut
    Bonjour.

    J'ai ajouté l'option "-l" pour préciser qu'il faut ajouter des fichiers .dll au fichier .exe.

    Lorsque j'essaie de lancer mon fichier .exe, j'ai un message d'erreur comme dans mon post précédent pour plusieurs fichiers .dll même si je les ajoute avec l'option -l.

    Je ne parviens pas à faire mon exécutable avec les modules et/ou fichiers .dll nécessaires ...

  5. #5
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 499 184
    Points
    499 184
    Par défaut
    Pouvez-vous nous montrer la commande pp exact que vous lancez.

  6. #6
    Membre du Club
    Homme Profil pro
    Ingénieur bioinformaticien
    Inscrit en
    Avril 2010
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur bioinformaticien
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2010
    Messages : 139
    Points : 49
    Points
    49
    Par défaut
    Oui bien sûr. La voilà :

    pp monScript.pl -o essai.exe -g -l libglib-2.0-0.dll -l libgcc_s_dw2-1.dll -l libpango-1.0-0.dll -l libgobject-2.0-0.dll -l libpangocairo-1.0-0.dll -l libpangoft2-1.0-0.dll -l libpangowin32-1.0-0.dll -l libcairo-2.dll -l freetype6.dll -l libpng14-14.dll -l Cairo.dll -l Glib.dll -l libgdk-win32-2.0-0.dll -l libgio-2.0-0.dll -l zlib1.dll -l libgdk_pixbuf-2.0-0.dll
    En sachant que je lance cette commande depuis le répertoire où se situe mon script Perl, ainsi que les fichiers .dll utilisés (je les ai copiés dans ce répertoire pour simplifier les chemins des fichiers).

    Et en fait, j'ai trouvé ces fichiers DLL car quand j'exécutais mon .exe il me disait qu'il ne trouvait pas les fichiers .dll cités ici. Donc à chaque fois j'ai exécuté, copié le .dll correspondant dans le répertoire, et modifié ma commande. Jusqu'au moment où le message d'erreur continue à m'indiquer que le fichier libgdk-win32-2.0-0.dll ne peut pas être trouvé, bien qu'il soit copié dans le répertoire de mon script Perl.

  7. #7
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 499 184
    Points
    499 184
    Par défaut
    Est-ce possible d'avoir le message d'erreur exact ?

  8. #8
    Membre du Club
    Homme Profil pro
    Ingénieur bioinformaticien
    Inscrit en
    Avril 2010
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur bioinformaticien
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2010
    Messages : 139
    Points : 49
    Points
    49
    Par défaut
    Voilà le message d'erreur :

    Point d'entrée introuvable

    Le point d'entrée de procédure gdk_screen_get_font_options_libgtk_only est introuvable dans la bibliothèque de liens dynamiques libgdk-win32-2.0-0.dll

  9. #9
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 499 184
    Points
    499 184
    Par défaut
    arrivez-vous à créer un exe d'un simple programme perl qui print bonjour ?

  10. #10
    Membre du Club
    Homme Profil pro
    Ingénieur bioinformaticien
    Inscrit en
    Avril 2010
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur bioinformaticien
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2010
    Messages : 139
    Points : 49
    Points
    49
    Par défaut
    J'ai essayé de faire un .exe d'un programme qui fait un simple "print "Bonjour"" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #! /usr/bin/perl -w
     
    use strict;
     
    print "\n\nBonjour!\n\n";
    Un autre qui affiche une fenêtre graphique qui contient un label "Bonjour !" :

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    #! /usr/bin/perl -w
     
    use strict;
     
    # utilisation et initialisation de Gtk2
    use Gtk2 '-init';
    use Gtk2::SimpleMenu;
     
     
    my $window = Gtk2::Window->new('toplevel');							# création de la fenêtre principale
    $window->signal_connect('delete_event', sub{Gtk2->main_quit();});	# fermeture du programme quand on clique sur la croix rouge
    $window->set_position('center');
    $window->set_title('DataAnalyzer : outil d\'analyse de séries de données');
     
    # creation d'une boîte verticale de composants
    my $vbox = Gtk2::VBox->new();
    $vbox->set_border_width(50);
    $window->add($vbox);
     
    my $lab = Gtk2::Label->new("Bonjour !");
     
    $vbox->pack_start($lab,1,1,0);
     
    # on montre la fenêtre princpale en dernier
    $window->show_all();
     
    Gtk2->main();
    Dans le premier cas, rien ne se passe. Le message ne s'affiche pas dans la console DOS.

    Dans le deuxième cas, j'ai le même message d'erreur de début qu'avec mon gros programme, à savoir :

    Le point d'entrée de procédure g_ascii_strtoll est introuvable dans la bibliothèque de liens dynamiques libglib-2.0-0.dll
    en sachant que je n'ai pas essayé ensuite avec tous les fichiers .dll de faire un .exe avec les options -l.

  11. #11
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 499 184
    Points
    499 184
    Par défaut
    PAs la peine d'aller plus loin. Vous avez déjà un souci car si le premier programme ne fonctionne pas,, ce n'est pas normal. Il faut revoir l'installation de ces modules.

  12. #12
    Membre du Club
    Homme Profil pro
    Ingénieur bioinformaticien
    Inscrit en
    Avril 2010
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur bioinformaticien
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2010
    Messages : 139
    Points : 49
    Points
    49
    Par défaut Concernant Tk
    Bonjour.

    Puisque Gtk2 ne me permet pas de générer un exécutable correctement, j'ai commencé à développer mon interface en Tk sur une machine Linux (en cours) sur laquelle j'ai réussi à installer Tk.

    Mais je n'arrive pas à l'installer sur ma machine sous Windows 7 64bits.

    Quand j'essaie de l'installer via CPAN, j'ai un message en fin de "test Tk" :
    C:\Perl64\bin\dmake.exe -- NOT OK
    Cependant j'ai l'impression que ma variable PATH contient ce qu'il faut. Et j'avais installé DMAKE via MinGW et même Visual C++ Express.
    Ce n'est pas la première fois que je n'arrive pas à installer à module à cause de dmake ou que ce message apparaît en tout cas.

    Je me suis dirigé vers CPAN car dans PPM, il n'y a pas de module Tk, il n'y a que des modules "dérivés" (Tk-Action, Tk-FileDialog, Tk-Browser, etc).
    Dois-je télécharger tous ces modules pour avoir installer Tk ?
    Ou dois-je installer Tkx ?

    Merci beaucoup !

  13. #13
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 499 184
    Points
    499 184
    Par défaut
    Sous Dos, lance cette commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ppm install http://www.bribes.org/perl/ppm64/Tk.ppd

  14. #14
    Membre du Club
    Homme Profil pro
    Ingénieur bioinformaticien
    Inscrit en
    Avril 2010
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur bioinformaticien
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2010
    Messages : 139
    Points : 49
    Points
    49
    Par défaut
    Merci beaucoup cela fonctionne très bien !!

    Y aurait-t-il une commande pour installer aussi Tk-JComboBox svp ?

  15. #15
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 499 184
    Points
    499 184
    Par défaut
    Vous avez de la chance, ce module est aussi dispo dans le dépôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ppm install http://www.bribes.org/perl/ppm64/Tk-JComboBox.ppd

  16. #16
    Membre du Club
    Homme Profil pro
    Ingénieur bioinformaticien
    Inscrit en
    Avril 2010
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur bioinformaticien
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2010
    Messages : 139
    Points : 49
    Points
    49
    Par défaut
    Oui pour une fois en quelques semaines je suis "veinard" on peut le dire ! Merci énormément !!

  17. #17
    Membre du Club
    Homme Profil pro
    Ingénieur bioinformaticien
    Inscrit en
    Avril 2010
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur bioinformaticien
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2010
    Messages : 139
    Points : 49
    Points
    49
    Par défaut Problème pour inclure Tk dans l'exécutable PP
    Bonjour.

    J'ai réussi à porter mon application Gtk2 en application Tk.

    Il ne me reste plus qu'à créer mon exécutable standalone.

    Voici la commande que j'utilise :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pp -o MonEssai.exe Application.pl -a "icone.png" -g -i "icone.ico" -M Tk -M Tk::JComboBox -M Tk::Balloon -M Tk::JPEG -M Tk::PNG -M Tk::Photo -M Tk::ProgressBar -M GD::Graph::lines -M GD::Graph::points
    Cependant cela ne fonctionne pas, cette commande ne parvient pas à inclure les modules spécifiés. J'ai un message d'erreur m'indiquant qu'il n'arrive pas à trouver Tk sur mon PC alors qu'il est bien installé.

    Pour être plus précis, j'ai réussi à installer Tk sur ma machine avec la commande suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ppm install http://www.bribes.org/perl/ppm/Tk.ppd
    L'installation semble s'être correctement effectuée.
    Cependant si je regarde dans CPAN si Tk est installé (m Tk), cela me dit qu'il n'est pas installé !

    Si j'enlève les options -M, je parviens à créer un exécutable mais bien entendu non fonctionnel puisqu'il requiert Tk.

    Comment puis-je faire ?
    J'ai vu qu'il existe l'option -a pour ajouter des fichiers. Je peux peut-être spécifier mes modules avec l'option -M avec le chemin complet vers les fichiers .pm de ces modules ?

    C'est vraiment la dernière étape de mon projet. J'espère vraiment pouvoir le terminer.

    Merci beaucoup.

    Bonne soirée et bonne semaine.

  18. #18
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 499 184
    Points
    499 184
    Par défaut
    Il faudrait nous mettre le message d'erreur exact.

  19. #19
    Membre du Club
    Homme Profil pro
    Ingénieur bioinformaticien
    Inscrit en
    Avril 2010
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur bioinformaticien
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2010
    Messages : 139
    Points : 49
    Points
    49
    Par défaut
    Quand j'essaie de créer mon exécutable avec les options -M j'ai le message d'erreur suivant :

    Cannot find module Tk.pm (specified with -M)
    Si je crée un exécutable sans spécifier ces modules avec l'option -M, quand j'essaie de lancer l'exécutable j'obtiens ce message d'erreur "habituel" qui dit juste en gros :

    Can't locate Tk.pm in (@INC contains ....

    BEGIN failed--compilation aborted at script/Application.pl line 5
    Donc c'est vrai que le plus curieux est le fait que je réussisse à installer Tk (via le repositories bribes comme dit précédemment, ou même par ActivePerl PPM), mais que dans CPAN il apparaisse non installé.
    D'ailleurs dans le dossier C:/Perl et les sous dossiers, je ne trouve pas Tk.pm.

  20. #20
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 499 184
    Points
    499 184
    Par défaut
    Sur ton 32 bits tu as le même souci ?

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 3 123 DernièreDernière

Discussions similaires

  1. problème script perl lancé par php sur un serveur
    Par Landraille dans le forum Web
    Réponses: 1
    Dernier message: 12/03/2013, 14h37
  2. problème script Perl
    Par scrathi dans le forum Programmation et administration système
    Réponses: 15
    Dernier message: 17/03/2010, 11h48
  3. Problème script perl avec STDIN
    Par deimosfr dans le forum Langage
    Réponses: 2
    Dernier message: 23/07/2009, 10h22
  4. Problème Script Perl : Proxy Authentication Required
    Par Flipmode dans le forum Langage
    Réponses: 5
    Dernier message: 09/07/2009, 17h23
  5. Problème execution script perl
    Par 00sebbe dans le forum Apache
    Réponses: 1
    Dernier message: 29/08/2005, 14h43

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