Wasmtime组件add示例运行失败:cargo run提示无可用bin目标
Wasmtime组件add示例运行报错解决:
error: a bin target must be available for cargo run 问题重现
按照Wasmtime组件文档的WASI-0.2 add示例编写代码,执行cargo component build --release成功后,运行cargo run --release -- 1 2 ../add/target/wasm32-wasi/release/add.wasm时触发错误:
错误:必须有一个二进制目标才能执行cargo run
相关代码
lib.rs
#[allow(warnings)] mod bindings; use bindings::Guest; struct Component; impl Guest for Component { fn add(x: i32, y: i32) -> i32 { x + y } } bindings::export!(Component with_types_in bindings);
world.wit
package component:add; /// An example world for the component to target. world example { export add: func(x: s32, y: s32) -> s32; }
使用版本:wasmtime-cli 21.0.1 (cedf9aa0f 2024-05-22)
问题原因
当前项目是库类型项目(通过cargo component new --lib初始化),cargo run命令仅用于运行项目中的二进制可执行目标(即src/main.rs对应的程序),但此示例未定义二进制入口,因此触发错误。文档中的第二步应使用wasmtime命令直接运行编译生成的Wasm组件,而非cargo run。
解决方法
执行以下命令运行组件:
wasmtime run ../add/target/wasm32-wasi/release/add.wasm -- 1 2
注意参数顺序:
--用于分隔wasmtime的命令参数和传递给Wasm组件的输入参数,确保1和2能被组件正确接收。
若一定要使用cargo run,需在项目中添加src/main.rs作为二进制入口,编写调用组件逻辑的代码,但这不符合该示例的原始设计意图。
内容的提问来源于stack exchange,提问作者Joshua Aruokhai
相关产品推荐
相关产品推荐

