0

我在emscripten环境中使用 libsndfile 运行了一些代码

#include <iostream>
#include <sndfile.h>

int main() 
{
    SF_INFO info;
    const char * path = "~/data/somefile.wav";
    SNDFILE* sf = sf_open(path,SFM_READ, &info);
    if(sf == NULL) 
    {
        std::cout<< sf_strerror(sf) << std::endl;
        return 1;
    }

    std::cout<<info.samplerate<<std::endl;
    
    std::cout<<"Hello world" << std::endl;
}

因此,理想情况下,如果我使用普通cmake(Apple Clang 编译器)运行它,一切正常,samplerate并且hello world打印出来,但是当我使用emcmake cmake(em++ 编译器)运行它并运行编译后的node main.js文件时,它会显示System error: no such file or directory. 谁能帮我解决这个问题?谁经历过这样的事情?

4

1 回答 1

0

所以我想通了。

问题是Emscripten有它的虚拟文件环境。所以如果你想上传这个文件,然后在编译后的文件中看到.js,你需要添加 compile flag --preload-file <FILE_PATH>,然后具有给定路径的文件将被 emscripten 环境识别。

于 2021-12-16T12:43:25.910 回答