c++ 使用emscripten写入文件系统

toiithl6  于 2023-07-01  发布在  其他
关注(0)|答案(1)|浏览(161)

我有一个在desktop(用gcc 10为x86_64 arch编译)和emscripten(用emscripten编译并通过nodejs运行)中运行的应用程序。这段代码生成了一些我需要保存的文件。
在x86_64的情况下,它非常简单,我只是使用std::ofstream,但在emscripten的情况下,我不知道如何继续。我读过wiki,它说emscripten提供的文件系统是虚拟的,存在于内存中,但他们也说有一些方法可以将文件保存到主机文件系统(https://emscripten.org/docs/api_reference/Filesystem-API.html)。
但是,我还不能将文件从emscripten直接保存到主机文件系统
我将欣赏一个关于如何使用emscripten保存文件的例子。
作为一个例子,我正在努力实现,
main.cpp:

#include <fstream>

int main()
{
    std::ofstream os("log.txt", std::ios::trunc);
    os << "a";
}

编译

em++ main.cpp

并执行为

node a.out.wasm

问题是这并不能保存log.txt。我如何告诉emscripten将该文件写入我的主机文件系统?

8ehkhllq

8ehkhllq1#

编辑:@jjcasmar是正确的,这个选项需要文件在编译时存在,所以我的答案是错误的

在编译代码时,您可以使用--preload-file参数,以给予代码能够访问文件:

em++ main.cpp --preload-file ./log.txt

你可以从这个question看到我的另一个答案。

相关问题