Précédent   Forum du club des développeurs et IT Pro > Autres langages > Perl > Interfaces Graphiques
Interfaces Graphiques Forum d'entraide pour les interfaces graphiques en Perl (TK, GTK, Tk-Zinc, 2D et 3D avec OpenGPL, ....). Avant de poster, veuillez consulter la FAQ Perl/Tk , les cours Perl.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 01/01/2012, 19h07   #1
phoenix420
Futur Membre du Club
 
Homme mAtT
Etudiant en Bioinformatique
Inscription : avril 2010
Messages : 132
Détails du profil
Informations personnelles :
Nom : Homme mAtT
Âge : 25
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Etudiant en Bioinformatique

Informations forums :
Inscription : avril 2010
Messages : 132
Points : 19
Points : 19
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 :
"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 :
pp -o testData.exe Data.pl -v
En vous remerciant, et en vous souhaitant une bonne année 2012 !
phoenix420 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/01/2012, 15h43   #2
djibril
Responsable Perl et Outils

 
Avatar de djibril
 
Homme
Inscription : avril 2004
Messages : 13 817
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 33
Localisation : France

Informations forums :
Inscription : avril 2004
Messages : 13 817
Points : 31 518
Points : 31 518
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 ?
__________________
Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !
djibril est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/01/2012, 19h42   #3
phoenix420
Futur Membre du Club
 
Homme mAtT
Etudiant en Bioinformatique
Inscription : avril 2010
Messages : 132
Détails du profil
Informations personnelles :
Nom : Homme mAtT
Âge : 25
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Etudiant en Bioinformatique

Informations forums :
Inscription : avril 2010
Messages : 132
Points : 19
Points : 19
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 :

Citation:
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.
phoenix420 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/01/2012, 21h17   #4
phoenix420
Futur Membre du Club
 
Homme mAtT
Etudiant en Bioinformatique
Inscription : avril 2010
Messages : 132
Détails du profil
Informations personnelles :
Nom : Homme mAtT
Âge : 25
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Etudiant en Bioinformatique

Informations forums :
Inscription : avril 2010
Messages : 132
Points : 19
Points : 19
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 ...
phoenix420 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/01/2012, 21h43   #5
djibril
Responsable Perl et Outils

 
Avatar de djibril
 
Homme
Inscription : avril 2004
Messages : 13 817
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 33
Localisation : France

Informations forums :
Inscription : avril 2004
Messages : 13 817
Points : 31 518
Points : 31 518
Pouvez-vous nous montrer la commande pp exact que vous lancez.
__________________
Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !
djibril est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/01/2012, 22h02   #6
phoenix420
Futur Membre du Club
 
Homme mAtT
Etudiant en Bioinformatique
Inscription : avril 2010
Messages : 132
Détails du profil
Informations personnelles :
Nom : Homme mAtT
Âge : 25
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Etudiant en Bioinformatique

Informations forums :
Inscription : avril 2010
Messages : 132
Points : 19
Points : 19
Oui bien sûr. La voilà :

Citation:
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.
phoenix420 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/01/2012, 22h09   #7
djibril
Responsable Perl et Outils

 
Avatar de djibril
 
Homme
Inscription : avril 2004
Messages : 13 817
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 33
Localisation : France

Informations forums :
Inscription : avril 2004
Messages : 13 817
Points : 31 518
Points : 31 518
Est-ce possible d'avoir le message d'erreur exact ?
__________________
Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !
djibril est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/01/2012, 22h49   #8
phoenix420
Futur Membre du Club
 
Homme mAtT
Etudiant en Bioinformatique
Inscription : avril 2010
Messages : 132
Détails du profil
Informations personnelles :
Nom : Homme mAtT
Âge : 25
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Etudiant en Bioinformatique

Informations forums :
Inscription : avril 2010
Messages : 132
Points : 19
Points : 19
Voilà le message d'erreur :

Citation:
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
phoenix420 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/01/2012, 23h02   #9
djibril
Responsable Perl et Outils

 
Avatar de djibril
 
Homme
Inscription : avril 2004
Messages : 13 817
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 33
Localisation : France

Informations forums :
Inscription : avril 2004
Messages : 13 817
Points : 31 518
Points : 31 518
arrivez-vous à créer un exe d'un simple programme perl qui print bonjour ?
__________________
Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !
djibril est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/01/2012, 23h20   #10
phoenix420
Futur Membre du Club
 
Homme mAtT
Etudiant en Bioinformatique
Inscription : avril 2010
Messages : 132
Détails du profil
Informations personnelles :
Nom : Homme mAtT
Âge : 25
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Etudiant en Bioinformatique

Informations forums :
Inscription : avril 2010
Messages : 132
Points : 19
Points : 19
J'ai essayé de faire un .exe d'un programme qui fait un simple "print "Bonjour"" :

Code :
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 :
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 :

Citation:
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.
phoenix420 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/01/2012, 23h31   #11
djibril
Responsable Perl et Outils

 
Avatar de djibril
 
Homme
Inscription : avril 2004
Messages : 13 817
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 33
Localisation : France

Informations forums :
Inscription : avril 2004
Messages : 13 817
Points : 31 518
Points : 31 518
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.
__________________
Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !
djibril est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2012, 19h07   #12
phoenix420
Futur Membre du Club
 
Homme mAtT
Etudiant en Bioinformatique
Inscription : avril 2010
Messages : 132
Détails du profil
Informations personnelles :
Nom : Homme mAtT
Âge : 25
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Etudiant en Bioinformatique

Informations forums :
Inscription : avril 2010
Messages : 132
Points : 19
Points : 19
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" :
Citation:
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 !
phoenix420 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2012, 19h57   #13
djibril
Responsable Perl et Outils

 
Avatar de djibril
 
Homme
Inscription : avril 2004
Messages : 13 817
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 33
Localisation : France

Informations forums :
Inscription : avril 2004
Messages : 13 817
Points : 31 518
Points : 31 518
Sous Dos, lance cette commande :
Code :
ppm install http://www.bribes.org/perl/ppm64/Tk.ppd
__________________
Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !
djibril est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2012, 20h53   #14
phoenix420
Futur Membre du Club
 
Homme mAtT
Etudiant en Bioinformatique
Inscription : avril 2010
Messages : 132
Détails du profil
Informations personnelles :
Nom : Homme mAtT
Âge : 25
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Etudiant en Bioinformatique

Informations forums :
Inscription : avril 2010
Messages : 132
Points : 19
Points : 19
Merci beaucoup cela fonctionne très bien !!

Y aurait-t-il une commande pour installer aussi Tk-JComboBox svp ?
phoenix420 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2012, 21h01   #15
djibril
Responsable Perl et Outils

 
Avatar de djibril
 
Homme
Inscription : avril 2004
Messages : 13 817
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 33
Localisation : France

Informations forums :
Inscription : avril 2004
Messages : 13 817
Points : 31 518
Points : 31 518
Vous avez de la chance, ce module est aussi dispo dans le dépôt :
Code :
ppm install http://www.bribes.org/perl/ppm64/Tk-JComboBox.ppd
__________________
Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !
djibril est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2012, 21h09   #16
phoenix420
Futur Membre du Club
 
Homme mAtT
Etudiant en Bioinformatique
Inscription : avril 2010
Messages : 132
Détails du profil
Informations personnelles :
Nom : Homme mAtT
Âge : 25
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Etudiant en Bioinformatique

Informations forums :
Inscription : avril 2010
Messages : 132
Points : 19
Points : 19
Oui pour une fois en quelques semaines je suis "veinard" on peut le dire ! Merci énormément !!
phoenix420 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/01/2012, 00h43   #17
phoenix420
Futur Membre du Club
 
Homme mAtT
Etudiant en Bioinformatique
Inscription : avril 2010
Messages : 132
Détails du profil
Informations personnelles :
Nom : Homme mAtT
Âge : 25
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Etudiant en Bioinformatique

Informations forums :
Inscription : avril 2010
Messages : 132
Points : 19
Points : 19
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 :
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 :
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.
phoenix420 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/01/2012, 01h35   #18
djibril
Responsable Perl et Outils

 
Avatar de djibril
 
Homme
Inscription : avril 2004
Messages : 13 817
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 33
Localisation : France

Informations forums :
Inscription : avril 2004
Messages : 13 817
Points : 31 518
Points : 31 518
Il faudrait nous mettre le message d'erreur exact.
__________________
Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !
djibril est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/01/2012, 01h43   #19
phoenix420
Futur Membre du Club
 
Homme mAtT
Etudiant en Bioinformatique
Inscription : avril 2010
Messages : 132
Détails du profil
Informations personnelles :
Nom : Homme mAtT
Âge : 25
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Etudiant en Bioinformatique

Informations forums :
Inscription : avril 2010
Messages : 132
Points : 19
Points : 19
Quand j'essaie de créer mon exécutable avec les options -M j'ai le message d'erreur suivant :

Citation:
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 :

Citation:
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.
phoenix420 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/01/2012, 08h47   #20
djibril
Responsable Perl et Outils

 
Avatar de djibril
 
Homme
Inscription : avril 2004
Messages : 13 817
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 33
Localisation : France

Informations forums :
Inscription : avril 2004
Messages : 13 817
Points : 31 518
Points : 31 518
Sur ton 32 bits tu as le même souci ?
__________________
Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !
djibril est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 20h18.


 
 
 
 
Partenaires

Hébergement Web