![](/img/trans.png)
[英]How do I detect when Emscripten's generated .js finishes loading the wasm so I can run my JS functions which call it?
[英]Emscripten: Customize the generated js so it loads the .wasm file in a custom way
通過使用以下選項進行編譯,
emcc -s WASM=1 main.cpp -o index.js
emscripten 生成一個index.wasm
和一個 js 包裝器index.js
。 js 包裝器在瀏覽器中運行時使用XMLHttpRequest
加載位於同一目錄中的.wasm
文件。
那么如果我需要手動加載.wasm
文件該怎么辦呢? 加載部分在包裝器中似乎是硬編碼的。
以下是我需要這個的一些情況:
.wasm
文件。.wasm
文件的url是動態生成的。XMLHttpRequest
的沙箱中運行,只有 API 像getMyData('some_file')
。 我知道我只能生成.wasm
文件,通過
emcc -s WASM=1 main.cpp -o index.wasm
但是隨后我丟失了包裝器,這在使用 SDL 和 GLES 等一些 emscripten API 時並非易事。
AFIK,JS 包裝器調用 fetch() 而不是 XHR。 如果可用,您可以使用 Service Worker 攔截該請求並返回您想要的任何內容。
您還可以修改 Emscripten 源代碼(我有 v1.39.13)以重寫默認加載行為。 在文件$EMSDK/upstream/emscripten/src/preamble.js
中,根據自己的喜好修改函數getBinaryPromise()
和getBinary()
,然后使用emcc
構建以在 WASM JS 包裝器中自定義加載行為。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.