Thread Zugriffe auf .dll über Win32::API
(17 answers)
Opened by Fabian at 2012-05-08 13:39 Guest Fabian Wenn ich das richtig verstehe, bekommt die Funktion zwei Zeiger als Argumente aber Du weist Win32::API an sie mit zwei Fließkommazahlen als Argumente aufzurufen — das kann ja nicht funktionieren. Wenn die Funktion aber wirklich Zeiger auf Gleitkommazahlen als Argumente erwartet, dann wird der Aufruf über Win32::API ein wenig hässlich, denn das müsste in etwa so aussehen: Code (perl): (dl
)
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 use 5.010; use strict; use warnings; use Win32::API; # Wrapper for external function with awkward interface sub DOTP { # Get arguments my ($T, $P) = @_; # Prepare foreign function interface, if necessary state $ffi = Win32::API->new( 'CARBONDIOXIDE', 'double DOTP(LPDOUBLE lpT, LPDOUBLE lpP)' ); # Pack arguments into memory to be passed to the function my $bufT = pack('d', $T); my $bufP = pack('d', $P); # Perform external call and return value return $ffi->Call($bufT, $bufP); } # Test the thing say DOTP(300, 6); Last edited: 2012-05-08 16:05:26 +0200 (CEST) When C++ is your hammer, every problem looks like your thumb.
|