我正在使用 NativeCall 接口。
该库将多次调用我的回调函数。
这很好用。我可以用正确的签名声明我的回调,将它作为 &callback 传递,然后库调用 sub 就好了。
它还能够将有效负载 void *pointer 设置为我想要的任何内容,并将其包含在对我的回调函数的调用中。
例如,我可以在有效负载中隐藏一个 Perl Str 并成功往返吗?
sub set_userdata(Pointer) returns int32 is native { ... }
sub set_callback(&callback(Pointer $userdata --> int32)) returns int32 is native { ... }
sub callback(Pointer $userdata) returns int32 {
my Str $mystring = ???
...
}
my Str $my-userdata-string;
set_userdata(???);
set_callback(&callback);
似乎它可以与一些绑定咒语一起使用,“is rw”,nativecast() 和/或 .deref。