EmscriptenでWebAssemblyを作る
要素
次のようなコードで指定し、そのコードファイルパスを引数に与える
code:js
mergeInto(LibraryManager.library, {
func1,func2,// ...
});
wasm moduleの初期化コードの(おそらく)末尾に指定したJSファイルを差し込めるoption
既存のコードをwasmにする
わかりやすい
Rust版はなさそう
$ em++ hello.cpp -o hello.html
実行可能なhtmlが生成される
事前にスタイルなども設定されているデモ用のやつ
hello.html,hello.js,hellow.wasmができる
hellow.htmlを開くとhellow.cppのmainが実行される
$ em++ hello.cpp -o hello.js
jsとwasmだけ作る
$ em++ hello.cpp -o hello.mjs
ES6形式のjsとwasmを作る
ccallとcwrap
-lembindをつける
--embind-emit-tsdで指定する
$ em++ cpp/lib.cpp -lembind -o cpp/dist/lib.mjs --embind-emit-tsd lib.d.ts
型定義ファイルは-oで指定したパスと同じdirectoryに出力される
引数でpointerを使うとエラーが出る
$ Implicitly binding raw pointers is illegal. Specify allow_raw_pointer<arg<?>>
色々提案されてる?
情報量多め
code:json
"features": {
"ghcr.io/ebaskoro/devcontainer-features/emscripten:1": {}
}