Página 1 de 1

Compilando con perl2exe y DBI (mysql)

NotaPublicado: 2012-05-30 13:41 @611
por Dgrande
Hola amigos. a Ver si me podéis echar una mano. Me apasiona este lenguaje, pero me encuentra con un problemilla.

Recientemente me compré la licencia del perl2exe para Windows y he tenido diferentes problemas a la hora de compilar con el programa perl2exe. La verdad sea que siempre fueron solventados pues en la red siempre me dieron soluciones.

Ahora me encuentro con uno que no salgo. Es un programa escrito en Tk que realiza unas tareas de mantenimiento en una base de datos MySQL externa a través del módulo DBI.

Cuando compilo me da errores referentes a que no localiza las .dll, he probado diferentes fórmulas de incluirlas al compilar, pero no consigo que funcione.

Me imagino con tanta gente experta en Perl por este foro, encuentre a alguien, que de seguro, se haya encontrado con el mismo problema.

Por otro lado ¿existe algún compilador que genere exe más recomendado que compile desde Windows para diferentes S.O. como lo hace el perl2exe?

Otra cuestión para el administrador del foro: estoy suscrito desde hace mucho tiempo ya a algunos foros y nunca recibo los correos de nuevos hilos, ¿es normal esto?

Gracias, un saludo a todos los perleros.

Re: Compilando con perl2exe y DBI (mysql)

NotaPublicado: 2012-05-30 14:29 @645
por explorer
Hay más hilos hablando de perl2exe. Usa el sistema de búsqueda.

Si quieres recibir actualizaciones, es mejor que te unas al twitter @perlenespanol. O mediante los canales RSS (el general es rss/news/digest/rss.xml )

Re: Compilando con perl2exe y DBI (mysql)

NotaPublicado: 2012-05-30 15:26 @684
por Dgrande
Bueno, después de alguna prueba lo conseguí, así que dejo un ejemplo y los pasos de como lo conseguí por si alguna otra persona se encuentra con el mismo problema en un futuro.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #perl2exe_include Tk
  2. use DBI;
  3. use DBD::mysql;
  4. use Tk;
  5.  
  6. my $mw = MainWindow->new;
  7. $mw->title('perl en espanyol');
  8. $mw->geometry('200x30');
  9. my $hello = $mw->Button(
  10.     -text    => 'Ver Tablas',
  11.     -command => \&Ver_Tablas
  12. );
  13. my $exit = $mw->Button(
  14.     -text    => 'Salir',
  15.     -command => [ $mw => 'destroy' ]
  16. );
  17. $hello->pack( -side => 'left' );
  18. $exit->pack( -side => 'right' );
  19. MainLoop;
  20.  
  21. sub Ver_Tablas {
  22.     my $Entry_MYSQL_Tipo     = "mysql";
  23.     my $Entry_MYSQL_Servidor = "0.0.0.0";
  24.     my $Entry_MYSQL_Usuario  = "usuario";
  25.     my $Entry_MYSQL_Clave    = "clave";
  26.     my $Entry_MYSQL_Basedato = "mibd";
  27.  
  28.     my $dbh_leer = DBI->connect( "DBI:$Entry_MYSQL_Tipo:database=$Entry_MYSQL_Basedato;host=$Entry_MYSQL_Servidor",
  29.         "$Entry_MYSQL_Usuario", "$Entry_MYSQL_Clave" );
  30.     my $sth = $dbh_leer->prepare("show tables");
  31.     if ( !$sth ) {
  32.         die "Error:" . $dbh_leer->errstr . "\n";
  33.     }
  34.     if ( !$sth->execute ) {
  35.         die "Error:" . $sth->errstr . "\n";
  36.     }
  37.  
  38.     while ( @row = $sth->fetchrow_array ) {
  39.         print "$row[0]\n";
  40.     }
  41. }
  42.  
Coloreado en 0.005 segundos, usando GeSHi 1.0.8.4

Lo compilo con perl2exe de la siguiente manera:

perl2exe.exe vertablas.pl

Nos generará el fichero ejecutable “vertablas.exe”. Si ejecutamos “vertablas.exe” nos encontraremos con un error de que no se localiza “libmysql.dll”.

Buscar “libmysql.dll” en “auto/DBD/mysql/”.

Copiamos “libmysql.dll” en el mismo directorio donde se ejecuta “vertablas.exe” y al fin funciona.

Nota: no incluir tal y como indica Indigo
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
#perl2exe_include DBI
#perl2exe_include DBD::mysql
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


Espero que os sirva de ayuda,
Diego