Two possibilities.
double i64d ( ) { __int64 x = 123435; return (double)x; }
SV* i64p( ) { union { __int64 i; char s[8]; } x; x.i = 123456789; return newSVpv( x.s, 8 ); } ... ## Note: The unpacking will vary with endianness of the platform. my( @i64 ) = unpack 'VV', i64p(); print $i64[ 1 ] * 2**32 + $i64[ 0 ];
Either way, if you are using a 32-bit Perl, you are going to be restricted to integers < ~2**52, so the latter method would only really be useful if you are going pass the I64 (back) to another piece of i64 capable code.
In reply to Re: Returning int64_t value from C++ to Perl
by BrowserUk
in thread Returning int64_t value from C++ to Perl
by dl.kudish
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |