通过使用以下选项进行编译,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.js
emcc
添加回答
举报
0/150
提交
取消