我有一个使用
WASI SDK
,旨在接收一个函数指针,该指针将传递给另一个C库,该库应在以后调用它(并带有任意签名):
__attribute__((export_name("add_func")))
void add_func(void* func) {
// pass func to some other API expecting void*
}
WASM模块通过
wasmtime-dotnet
,其中我希望动态创建任意数量的函数,并将它们传递给
add_func
,以这种方式:
Instance inst = ...;
var add_func = inst.GetAction<Function>("add_func");
add_func(Function.FromCallback(_store, (caller, arguments, results) => {
...
});
然而
inst.GetAction<Function>
退货
null
,而检索和调用此函数的唯一方法似乎是使用
int
参数,如
GetAction<int>
。
如何将以这种方式创建的函数传递给WASM?我找不到任何方法来更改函数的签名以允许funcref参数,或者获得创建的函数的索引(我认为函数指针无论如何都是WASM中的索引)。