wasm
提供加载和运行 WASM 模块的实用程序
基于 Wasmer 运行时构建。
设置
首先安装构建Wasmer运行时所需的工具
-
安装 Rust SDK。
-
在 Windows 上,要获取
link.exe,请安装 Visual Studio 构建工具
并选择“使用C++的桌面开发”选项。
基本用法
作为一个简单的例子,我们将尝试使用
package:wasm从 Dart 调用一个简单的 C 函数。有关使用 WASI 的更详细示例,请查看
示例目录。
-
首先创建一个新的 Dart 应用文件夹:
dart create wasmtest -
在
pubspec.yaml中添加wasm包的依赖项,然后运行dart pub get -
接下来运行
dart run wasm:setup来构建Wasmer运行时。这需要几分钟时间。 -
然后添加一个新文件
square.cc,内容如下:extern "C" int square(int n) { return n * n; } -
我们可以使用较新版本的
clang编译器将此C++代码编译为WASM:clang --target=wasm32 -nostdlib "-Wl,--export-all" "-Wl,--no-entry" -o square.wasm square.cc -
将你的 Dart 程序(
bin/wasmtest.dart)的内容替换为import 'dart:io'; import 'package:wasm/wasm.dart'; void main() { final data = File('square.wasm').readAsBytesSync(); final mod = WasmModule(data); print(mod.describe()); final inst = mod.builder().build(); final square = inst.lookupFunction('square'); print(square(12)); } -
运行 Dart 程序:
dart run。这应该会打印export memory: memory export function: int32 square(int32) 144