当我尝试使用以下代码中的libsndfile库在Qt中打开文件时,我不断收到主题中提到的错误(没有其他消息):
SNDFILE * outfile;
SF_INFO sfinfo;
//preparing output file
sfinfo.format = SF_FORMAT_WAV | SF_FORMAT_PCM_16;
sfinfo.channels = 1;
sfinfo.samplerate = 44100;
memset( &sfinfo, 0, sizeof(SF_INFO));
const char* path = "RainFilter.wav";
outfile = sf_open(path, SFM_WRITE, &sfinfo);
if(!(outfile))
{
std::cout << "Failed to create output file" << std::endl;
sf_perror(outfile);
return;
}
这似乎是sfinfo的format属性的主要部分的问题。我已经尝试了大多数其他格式,包括数值,例如:
sfinfo.format = 0x0B0000 | 0x0006;
我该怎么办?它是库链接问题,环境问题还是代码不正确?在这种情况下,路径无关紧要,我尝试指向不同的目录,问题仍然存在。
答案 0 :(得分:1)
将通话移至
memset(&sfinfo, 0, sizeof(sfinfo));
//preparing output file
sfinfo.format = SF_FORMAT_WAV | SF_FORMAT_PCM_16;
sfinfo.channels = 1;
sfinfo.samplerate = 44100;
到之前对sfinfo元素的赋值。更好的是,删除对memset的调用,并使用以下内容对结构进行零初始化:
SFINFO sfinfo = {0};
sfinfo.format = SF_FORMAT_WAV | SF_FORMAT_PCM_16;
sfinfo.channels = 1;
sfinfo.samplerate = 44100;