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 |