为了账号安全,请及时绑定邮箱和手机立即绑定

Emscripten:自定义生成的 js,以便以自定义方式加载 .wasm 文件

Emscripten:自定义生成的 js,以便以自定义方式加载 .wasm 文件

一只名叫tom的猫 2022-08-04 10:27:05
通过使用以下选项进行编译,emcc -s WASM=1 main.cpp -o index.jsemscripten 生成一个 、 和一个 js 包装器 。js 包装器加载位于同一目录中的文件,并在浏览器中运行时使用。index.wasmindex.js.wasmXMLHttpRequest那么,如果我需要手动加载文件,该怎么办?加载部分在包装器中似乎是硬编码的。.wasm以下是我需要这个的一些情况:我需要从另一个网址(例如从CDN)提供文件。.wasm下载文件的 url 是动态生成的。.wasm代码在不允许的沙箱中运行,只有一个像 这样的API。XMLHttpRequestgetMyData('some_file')我需要将所有文件嵌入为base64字符串。我知道我只能生成文件,通过.wasmemcc -s WASM=1 main.cpp -o index.wasm但是后来我失去了包装器,这在使用一些描述性API(如SDL和GLES)时并不容易。
查看完整描述

1 回答

?
手掌心

TA贡献1942条经验 获得超3个赞

AFIK,JS包装器调用fetch()而不是XHR。如果可用,可以使用服务工作线程来拦截该请求并返回所需的任何内容。

您还可以修改Emscripten源代码(我有v1.39.13)以重写默认加载行为。在 文件中,根据自己的喜好修改函数 getBinaryPromise() 和 getBinary(),然后构建 ,以便在 WASM JS 包装器中具有自定义加载行为。$EMSDK/upstream/emscripten/src/preamble.jsemcc


查看完整回答
反对 回复 2022-08-04
  • 1 回答
  • 0 关注
  • 296 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信