sta*_*tor 5 javascript emscripten webassembly
emcc如果我使用without编译我的 C++ 代码-s MODULARIZE=1 -s 'EXPORT_NAME="createMyModule"',我可以加载我的 WebAssembly 并访问文件系统 API,如下所示:
HTML:
<script type="text/javascript">
var Module = {
onRuntimeInitialized: function() {
console.log('Module loaded!');
if (FS.mkdir) {
console.log('File System API available!');
}
}
};
</script>
<script type="text/javascript" src="myWebAssemblyModule.js"></script>
<script type="module" src="my.js"></script>
Run Code Online (Sandbox Code Playgroud)
日志:
Module loaded!
File System API available!
Run Code Online (Sandbox Code Playgroud)
但是,如果我添加-s MODULARIZE=1 -s 'EXPORT_NAME="createMyModule"'编译器选项,并尝试基于 Promise 访问文件系统 API,则它不起作用:
HTML:
<script type="text/javascript" src="myWebAssemblyModule.js"></script>
<script type="module" src="my.js"></script>
Run Code Online (Sandbox Code Playgroud)
我的.js:
createMyModule().then(MyModule => {
console.log('Module loaded!');
if (MyModule.FS.mkdir) {
console.log('File System API available!');
}
});
Run Code Online (Sandbox Code Playgroud)
日志:
Module loaded!
Run Code Online (Sandbox Code Playgroud)
那么如何使用“模块化/基于 Promise”的方法访问文件系统 API?
MyModule.FS顺便说一句,可以访问,但不能访问MyModule.FS.mkdir。
要FS在模块化构建中可用,您必须显式导出它:
emcc ... -s 'EXPORTED_RUNTIME_METHODS=["FS"]'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
974 次 |
| 最近记录: |