【发布时间】:2018-02-13 17:19:57
【问题描述】:
试图与一个 C 库接口,该库采用一个结构,该结构带有一组指向它在各个点调用的函数的指针。
类似这样的:
struct callbacks {
int (*foo)(int);
int (*bar)(int);
}
int set_callbacks(callbacks *cbs);
我可以进行回调:
sub foo-callback(int32 --> int32) {...}
sub bar-callback(int32 --> int32) {...}
如果这可行,那就太酷了:
class Callbacks is repr<CStruct>
{
has &.foo (int32 --> int32);
has &.bar (int32 --> int32);
}
但事实并非如此。我正在尝试做一些事情:
class Callbacks is repr<CStruct>
{
has Pointer $.foo;
has Pointer $.bar;
}
并将它们设置为nativecast(Pointer, &foo-callback) 或类似的,但我不能
似乎是在强迫他们进去。
除了编写一个小 C 函数来获取所有 Perl 6 函数指针并将它们插入 C 中的结构之外,还有其他方法吗?
【问题讨论】:
标签: raku nativecall