小编xla*_*lat的帖子

带有Str的Perl6 NativeCall被编码('utf16')得到随机损坏的结果

我正在GetFullPathName使用perl6脚本映射Windows API NativeCall,因此我写了以下内容:

#!perl6
use NativeCall;
constant \WIN32_MAX_PATH = 260;    

#I may use directly $path.IO.absolute()
sub Win32-GetFullPathName(
        Str $lpFileName is encoded('utf16'),
        int32 $nBufferLength, 
        #Str $lpBuffer is encoded('utf16') is rw,
        Blob $lpBuffer is rw,
        Str $lpFilenameIndex is rw)
    returns int32
    is native('kernel32.dll') 
    is symbol('GetFullPathNameW') 
    { * }


my $path = '.';
my $fp-size = Win32-GetFullPathName(
        $path, # $path ~ "\0", # <!-- this hack make it working fine
        WIN32_MAX_PATH, 
        #my Str $fpath = ' ' x WIN32_MAX_PATH;
        my …
Run Code Online (Sandbox Code Playgroud)

utf-16 perl6 nativecall

6
推荐指数
1
解决办法
102
查看次数

标签 统计

nativecall ×1

perl6 ×1

utf-16 ×1