我尝试用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)