5

JavaScriptチュートリアルからの呼び出しに従っています。ノードを使用する代わりに、Web ブラウザーから直接呼び出しています。

hello_world/index.html

<!DOCTYPE html>
<html lang="en">
  <head></head>
  <body>

    <script src="hello_world.js"></script>

    <script type='text/javascript'>
      var hello_world = cwrap('hello_world', 'number', []);
      var result = hello_world();
      console.log("result: ", result);
    </script>

  </body>
</html>

hello_world/src/main.rs

#![feature(link_args)]

#[link_args = "-s EXPORTED_FUNCTIONS=['_hello_world']"]
extern {}

#[no_mangle]
pub fn hello_world() -> isize {
    println!("Hello World!");

    41 + 1
}

fn main() {
    // Intentionally left blank
}

指示:

cargo build --target asmjs-unknown-emscripten

Safari のエラー メッセージ:

TypeError: Module["dynCall_ii"] は関数ではありません。(「Module"dynCall_ii"」では、「Module["dynCall_ii"]」は定義されていません)

Firefox Nightly のエラー メッセージ:

TypeError: Module.dynCall_ii は関数ではありません

関数を印刷するだけの場合:

var hello_world = cwrap('hello_world', 'number', []);
console.log("function: ", hello_world);

私は(Firefox Nightlyで)得ます:

関数: 関数 asm._hello_world()

4

0 に答える 0