我有一个具有以下通常结构的Rust库:
Cargo.toml
src
|--lib.rs
.cargo
|--config (specifies target=asmjs-unknown-emscripten)
target
|......
Run Code Online (Sandbox Code Playgroud)
当我这样做时cargo build,我在目标下调用了一个新目录asmjs-unknown-emscripten,但是我期望的.js文件不存在.
正如这位用户所说,除了将它们公开之外,你还需要做一些特殊的事情来将函数导出到asm.js:
基本上你现在有这个样板:
Run Code Online (Sandbox Code Playgroud)#[link_args = "-s EXPORTED_FUNCTIONS=['_hello_world']"] extern {} fn main() {} #[no_mangle] pub extern fn hello_world(n: c_int) -> c_int { n + 1 }然后你可以在你的javascript中使用它来访问和调用函数:
Run Code Online (Sandbox Code Playgroud)var hello_world = cwrap('hello_world', 'number', ['number']); console.log(hello_world(41));
但是,Rust抱怨该#[link_args...]指令已被弃用.有没有可以解释这是如何工作的文件?