gpt4 book ai didi

javascript - 使用 MODULARIZE 选项编译时如何访问 emscripten 的文件系统 API?

转载 作者:行者123 更新时间:2023-12-01 17:13:48 26 4
gpt4 key购买 nike

如果我用 emcc 编译我的 C++ 代码没有 -s MODULARIZE=1 -s 'EXPORT_NAME="createMyModule"' ,我可以加载我的 WebAssembly 并访问 File System 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>
日志:
Module loaded!
File System API available!
但是如果我添加 -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>
我的.js:
createMyModule().then(MyModule => {
console.log('Module loaded!');
if (MyModule.FS.mkdir) {
console.log('File System API available!');
}
});
日志:
Module loaded!
那么如何使用“基于模块化/ promise ”的方法访问文件系统 API? MyModule.FS顺便说一句可以访问,但不是 MyModule.FS.mkdir .

最佳答案

制作 FS在模块化构建中可用,您必须明确导出它:

emcc ... -s 'EXPORTED_RUNTIME_METHODS=["FS"]'

关于javascript - 使用 MODULARIZE 选项编译时如何访问 emscripten 的文件系统 API?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63952910/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com