Perl en Español

  1. Home
  2. Tutoriales
  3. Foro
  4. Artículos
  5. Donativos
  6. Publicidad
 
Índice general » Mundo Perl » Avanzado » Error en Embedded Perl en C++  RESUELTO Responder al tema
Nuevo tema


Página 1 de 1  [ 3 mensajes ] 
 
Nota 2011-09-05 09:41 @445

Perlero Nuevo
Registrado: 2011-04-20 06:32 @314
Mensajes: 35
Error en Embedded Perl en C++
¡Hola a todos!

Espero que el verano bien :D

Bueno, aquí vuelta al trabajo y ¡me he encontrado con una dificultad! Suerte de vosotros ¡je,je,je!

Esta es:

Syntax: [ Download ] [ Hide ]
Using text Syntax Highlighting
Can't load module HTML::Parser, dynamic loading not available in this perl.
  (You may need to build a new perl executable which either supports
  dynamic loading or has the HTML::Parser module statically linked into it.)
 at /usr/local/lib/perl/5.10.1/HTML/Entities.pm line 154
Compilation failed in require at /usr/local/lib/perl/5.10.1/HTML/Entities.pm line 154.


Estoy lanzando un código Perl (funciona) desde C++ y surge este error. Es como si no supiera linkar este módulo.

¿Alguna sugerencia? :(


Gracias


Nota 2011-09-05 10:02 @460
Avatar de Usuario
Administrador
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España
Mensajes: 10250
Re: Error en Embedded Perl en C++  RESUELTO
Lo tienes respondido en perlembed, sección Using Perl modules, which themselves use C libraries, from your C program

_________________
JF^D Perl programming


Nota 2011-09-06 05:34 @273

Perlero Nuevo
Registrado: 2011-04-20 06:32 @314
Mensajes: 35
Re: Error en Embedded Perl en C++
¡¡¡Gracias, explorer!!!

Como bien dices, aparece en esa web.

Lo explicare por aquí si os parece bien (por si alguien llega al foro y ve la pregunta). (Nota: mi nivel no es alto, así que seguro que habrá una manera más fácil de hacerlo.)

Lo que he hecho para solucionar el problema es crear el fichero:

xsinit.cpp
Syntax: [ Download ] [ Hide ]
Using cpp Syntax Highlighting
  1. EXTERN_C void
  2. xs_init(pTHX)
  3. {
  4.         char *file = __FILE__;
  5.         dXSUB_SYS;
  6.  
  7.         /* DynaLoader is a special case */
  8.         newXS("DynaLoader::boot_DynaLoader", boot_DynaLoader, file);
  9. }


Con su header xsinit.h
Syntax: [ Download ] [ Hide ]
Using cpp Syntax Highlighting
  1. #include <EXTERN.h>
  2. #include <perl.h>
  3.  
  4. EXTERN_C void xs_init (pTHX);
  5.  
  6. EXTERN_C void boot_DynaLoader (pTHX_ CV* cv);


Luego en la llamada para introducir los parámetros necesarios para ejecutar el Perl desde C, se modifica:

perl_parse(my_perl, NULL, argc, my_argv,NULL);

por

perl_parse(my_perl, xs_init, argc, my_argv,NULL);

xs_init() realiza "magia" (indica al intérprete de Perl cómo linkar los ficheros a usar) y el error desaparece y ya puedes usar normalmente el use "Modulo::X".

¡Espero que sea de ayuda a todos!

¡Mil gracias, explorer!


Responder al tema  [ 3 mensajes ] 

Reglas del Foro
No puedes abrir nuevos temas en este Foro
No puedes responder a temas en este Foro
No puedes editar tus mensajes en este Foro
No puedes borrar tus mensajes en este Foro
No puedes enviar adjuntos en este Foro

Publicidad

Socializa

Síguenos por Twitter

Suscríbete GRATUITAMENTE al Boletín de Perl en Español

Saltar a:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Traducción al español por Huan Manwë para phpbb-es.com
phpBB SEO