我有一個生鏽庫如下常用結構:如何編譯一個Rust庫來定位asm.js?
Cargo.toml
src
|--lib.rs
.cargo
|--config (specifies target=asmjs-unknown-emscripten)
target
|......
當我做cargo build
,我得到下目標調用asmjs-unknown-emscripten
一個新的目錄,但我期望的.js文件不存在。
As this user notes,你必須做一些特殊的導出功能,除了它們標記公衆asm.js:
基本上,你有這個樣板現在:
#[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中使用此訪問和調用功能:
var hello_world = cwrap('hello_world', 'number', ['number']); console.log(hello_world(41));
但是,Rust抱怨#[link_args...]
指令已過時。有沒有任何文件可以解釋這是如何工作的?
你見過[編譯Rust到你的瀏覽器](http://www.hellorust.com/emscripten/)? – Shepmaster
是的,我掠過它,但我可能會錯過一些東西。我看到的唯一代碼示例(鏽蝕)只是用#[no_mangle]註釋公共函數。這似乎不適用於我的目的。我注意到他們正在使用rustc而不是貨物......?這個[link](http://www.hellorust.com/emscripten/demos/04-call-into-lib/)似乎是上面用戶評論的來源,但link_args仍然被棄用 - 這是怎麼回事與空的main(){}? – user1935361