E4042#
不合法的桩类型。
在定义 FFI 时,桩类型必须是一个有效的类型,即它们可以在相应的后端原生地表示。
例如,在 WASM 线性后端的 FFI 定义中,不能使用 FixedArray[T]
和 String
。
错误示例:#
在 WASM 线性后端:
fn ffi(array : FixedArray[Int]) -> Unit = "mod" "ffi"
// ^~~~~~~~~~~~~~~ Error: Invalid stub type.
建议#
将非原生类型通过 FFI 接口传递的方式取决于 MoonBit 编译器的后端和您使用的运行时。例如,如果你希望在 Wasm 线性内存后端将一个整数数组传递给 JS 宿主,可以将整数一个一个地传递给宿主函数,并在 JS 端存储数组。
type JsArray
fn make_js_array() -> JsArray = "mod" "make_js_array"
fn push_js_array(array : JsArray, value : Int) -> Unit = "mod" "push_js_array"