gpt4 book ai didi

rust - 如何在不使用 wasm-pack 的情况下将 Rust 项目编译为 Wasm?

转载 作者:行者123 更新时间:2023-12-03 11:24:30 40 4
gpt4 key购买 nike

我想使用 python-ext-wasm 将 Rust 程序/项目编译为 Wasm,以便在我的 Python 应用程序中使用.现有的教程假定它是针对网络的并建议 wasm-pack .有没有另一种在没有 JavaScript 绑定(bind)的情况下将 Rust 编译为 Wasm 的方法?

例如,如果我有一个 Rust 程序 (myproject/math.rs)。

#[no_mangle]
pub extern fn sum(x: i32, y: i32) -> i32 {
x + y
}
  • 如何将其转换为 wasm没有 webpack 的文件?
  • 如何获取整个项目(及其库依赖项)并将它们全部编译为 Wasm?
  • 最佳答案

    您可以使用 cargo build --target wasm32-unknown-unknown 直接编译 WebAssembly .这本质上是其他工具,如 wasm-packwasm-bindgen是围绕构建的,如果你不想要它(例如,如果你不是针对 JavaScript),你可以使用它直接编译到 WebAssembly。

    不过有一些注意事项:

  • WebAssembly 模块和主机之间的所有通信都必须使用 extern职能。这意味着只能使用有限数量的类型,主要是基本类型(整数、浮点数、 bool 值和指针)。除非您在顶部使用额外的抽象层(这是 wasm-bindgen 所做的),否则您将无法传递复杂类型。
  • wasm32-unknown-unknown 不支持大部分标准库(例如,包括文件系统和网络)。目标。如果您的 WebAssembly 主机支持 WASI(WebAssembly 系统接口(interface)),您可以使用 wasm32-wasi target 而是编译一个支持 WASI 的模块,它支持更多的标准库。
  • 关于rust - 如何在不使用 wasm-pack 的情况下将 Rust 项目编译为 Wasm?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60980310/

    40 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com