in reply to Re^6: perl c++ perlembed question
in thread perl c++ perlembed question

I think it works the same
C:\>perl -MDynaLoader -e " warn DynaLoader::dl_load_file($^X); " 4194304 at -e line 1. C:\>perl -MWin32::API -le " warn Win32::API::LoadLibrary($^X)" 4194304 at -e line 1.
I check memory usage with/without loadlibrary call, it doesn't grow.
C:\>perl -le" printf q!%x!, 4194304 " 400000 C:\>perl -le " @f = `Listdlls.exe $$`; print @f[8..10]" Base Size Version Path 0x00400000 0xb000 5.08.0009.0825 C:\Perl\bin\perl.exe
Similar idea RFC: Access XS directly without compilation Pure Perl module(245 lines) that calls external libraries - no XS file. Pure Perl module(246 lines, Linux/Win32) that calls external libraries - no XS file.

Replies are listed 'Best First'.
Re^8: perl c++ perlembed question
by syphilis (Archbishop) on Jun 28, 2009 at 10:24 UTC
    I think it works the same

    You and BrowserUK may well be right - so I thought I'd make use of the snippett BrowserUk provided and change 'power.pl' in the above example to:
    use Win32::API; sub expo { my $function = Win32::API->new( 'power.exe, 'int foo()', ); $return = $function->Call(); print "foo returned $return\n"; my ($a, $b) = @_; return $a ** $b; }
    I realise that foo() may not be exported by my 'power.exe', but thought I might as well give it a try. The output of running 'power.exe' now changes to:
    C:\_32\pscrpt\embed>power Can't load module Win32::API, dynamic loading not available in this pe +rl. (You may need to build a new perl executable which either supports dynamic loading or has the Win32::API module statically linked into +it.) at power.pl line 1 Compilation failed in require at power.pl line 1. BEGIN failed--compilation aborted at power.pl line 1. Undefined subroutine &main::expo called at power.pl line 1.
    I don't normally have any such trouble with Win32::API, so I presume the message is telling me that the embedded perl interpreter is a static one - and I'll either have to link Win32::API statically to it, or embed an interpreter that supports dynamic loading.

    Without knowing what's entailed, it doesn't sound particularly trivial to achieve, and I'm not sure that I really want to pursue it
    :-)

    Cheers,
    Rob