如何使用emscripten通过node.js进行文件输入? 我有一个C++项目,我用ESPRONTEN转换成JavaScript。我需要通过节点将文件输入程序的帮助。据我所知,emscripten中的默认文件系统使用只能在网页或web工作者上完成的预加载数据。我需要在命令行上使用node.js
看看下面的例子,我发现有一种方法可以使用NODEFS而不是默认的MEMFS,它应该允许我这样做。然而,我不确定我该怎么做。我真的不理解提供的测试代码如何使用emscripten通过node.js进行文件输入? 我有一个C++项目,我用ESPRONTEN转换成JavaScript。我需要通过节点将文件输入程序的帮助。据我所知,emscripten中的默认文件系统使用只能在网页或web工作者上完成的预加载数据。我需要在命令行上使用node.js,node.js,webassembly,emscripten,Node.js,Webassembly,Emscripten,看看下面的例子,我发现有一种方法可以使用NODEFS而不是默认的MEMFS,它应该允许我这样做。然而,我不确定我该怎么做。我真的不理解提供的测试代码 这里是如何在原始C++项目中进行文件处理: void InputFile(std::string &fileName) { std::ifstream in(fileName); if (in.fail()) { std::cerr << "ERROR, Could not open "
这里是如何在原始C++项目中进行文件处理:
void InputFile(std::string &fileName)
{
std::ifstream in(fileName);
if (in.fail())
{
std::cerr << "ERROR, Could not open " << fileName << std::endl;
exit(1);
}
}
void输入文件(std::string和fileName)
{
std::ifstream-in(文件名);
if(in.fail())
{
标准:cerr解释
使用构建的模块没有关于物理文件系统中文件的信息。相反,它使用虚拟文件系统。您所要做的就是在物理系统上的文件与模块虚拟系统上的文件之间创建链接。为您提供了此机会
快速解决方案
<>我们将通过使用嵌入的JS代码(添加)添加物理和虚拟文件系统之间的上述链接开始修改C++代码。首先(1),在虚拟文件系统中创建一个目录,该目录“>代码> /TEMP”,其中所有引用的文件将位于其中。,我们将这个新的虚拟目录链接到一个真实的物理位置(当前工作目录。
),其中所有引用的文件都已经存在
#包括
#包括
#包括
#包括
无效输入文件(常量std::字符串和文件名)
{
EM_ASM(
FS.mkdir('/temp');//(1)
mount(NODEFS,{root:'.},/temp'););/(2)
std::ifstream in(std::string(“/temp/”)+文件名);
if(in.fail())
{
我们可以在JS中这样做,而不必接触原始的C文件吗?(在我的例子中,我有一个用emconfigure和emmake编译的大项目,结果output.JS正在寻找/etc/path
,我想用JavaScript为Node.JS提供虚拟磁盘和真实磁盘之间的映射。)通过emcc
的-s NODERAWFS=1
标志了解了如何执行此操作。