私は、次の通常の構造の錆のライブラリを持っている:私はcargo build
を行うとRustライブラリをコンパイルしてasm.jsをターゲットにするにはどうすればよいですか?
Cargo.toml
src
|--lib.rs
.cargo
|--config (specifies target=asmjs-unknown-emscripten)
target
|......
、私は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 to Your Browser](http://www.hellorust.com/emscripten/)を見たことがありますか? – Shepmaster
ええ、私はそれを飛ばしましたが、私は何かが欠けているかもしれません。私が見た唯一のコードサンプル(錆びている)は#[no_mangle]でパブリック関数に注釈を付けるだけでした。それは私の最後にはうまくいかないようです。私は彼らが貨物の代わりにrustcを使っていることに気づいた...?この[link](http://www.hellorust.com/emscripten/demos/04-call-into-lib/)は、上記のユーザーコメントのソースであるようですが、link_argsは引き続き推奨されていません。空のmain(){}? – user1935361