我正在尝试使用 NativeCall 与一些 C 函数进行交互。
我有一个简单的 C 结构和一个需要它们的数组的函数。
struct foo {
int x;
char *s;
};
struct foo foo_array[3];
foo_array[0].x = 12;
foo_array[0].s = "foo";
foo_array[1].x = 27;
foo_array[1].s = "bar";
foo_array[2].x = -1;
void somefunc(foo_array);
我尝试了很多方法,但似乎无法完全正确。
class foo is repr('CStruct') {
has int32 $.x;
has Str $.s
};
sub somefunc(CArray[foo]) is native { * }
my @foo-array := CArray[foo].new;
@foo-array[0] = ???
@foo-array[1] = ???
@foo-array[2] = ???
somefunc(@foo-array);
如何正确创建类 foo 的对象并设置它们的值,以及如何使它们的数组适合传递?