小编vbe*_*eme的帖子

perl 6上的三指针本机调用

我尝试用perl6包装sd-bus,但是函数调用三指针有问题.
来自sd-bus.h

int sd_bus_list_names(sd_bus *bus, char ***acquired, char ***activatable); /* free the results */
Run Code Online (Sandbox Code Playgroud)

尝试原生呼叫

sub sd_bus_list_names(Pointer, Pointer[CArray[Str]] , Pointer[CArray[Str]] ) returns int32 is native('systemd') {*}
Run Code Online (Sandbox Code Playgroud)

我打电话,但我不知道如何对数组(@)获取和激活变量的dereferencies.

谢谢,对不起我的英语

[ 编辑 ]
侏儒回复解决我的问题derefencies指针[CArray [Str]]

这是一个测试代码:

use v6;
use NativeCall;
sub strerror(int32) returns Str is native {*}
sub sd_bus_default_system(Pointer is rw) returns int32 is native('systemd') {*}
sub sd_bus_unref(Pointer) returns Pointer is native('systemd') {*}
sub sd_bus_list_names(Pointer,Pointer[CArray[Str]] is rw, Pointer[CArray[Str]] is rw ) returns int32 is native('systemd') {*}

my Pointer $bus .= new;
my …
Run Code Online (Sandbox Code Playgroud)

perl6 nativecall

7
推荐指数
1
解决办法
176
查看次数

标签 统计

nativecall ×1

perl6 ×1