让我解释一下我在做什么。我有一个应用程序,我正在嵌入一个 wasm 引擎(特别是 wasmtime)并用 Rust 编写 wasm。目标不是一个浏览器,所以我没有使用 wasm-bindgen。我正在尝试从主机环境中导入两个函数。我已经让它工作了,但有一点黑客,我想删除黑客。这是我遇到的问题。我已经能够弄清楚如何让 Rust 在 wasm 输出中生成导入语句。问题是,如果不使用这些函数,则不包含 wasm 中的 import 语句。Wasmtime 似乎要求传递给 wasm 实例的导入数量与导入语句的数量相匹配。有意义的是,如果 wasm 模块需要导入,那么如果您不提供它们就会出现问题。问题是,如果您提供导入但未使用它们,这也是一个错误。
所以我看到了两种解决方法,要么我需要弄清楚如何让 Rust 包含 import 语句,即使它们没有被使用(现在黑客是调用函数但忽略结果,它基本上是不-op) 或找到一种方法来内省 wasm 以弄清楚它期望什么样的导入,并且只传递它所要求的。
我的问题是正确的方法,如果是这样,你怎么做?