我想在C中读取一个类似于Matlab的wavread命令的.wav文件。我遇到了这个似乎是解决方案的库http://www.mega-nerd.com/libsndfile/。但是有人可以解释如何安装这个库,以便我可以使用它的功能吗? (我以前从未这样做过,所以请帮忙)。我尝试包含sndfile.h但是出现了像Singletons
这样的错误。我相信这是因为我没有正确地整合图书馆。
答案 0 :(得分:0)
第一件事是安装库(我选择libsndfile-1.0.28-w32-setup.exe
是因为我使用预先安装的MinGW codeblocks-17.12mingw-setup.exe
运行code :: blocks,并且我认为默认情况下它具有32位编译器)并找到这些库三个文件:
sndfile.h
(对我来说位于C:\Program Files (x86)\Mega-Nerd\libsndfile\include
中)
libsndfile-1.lib
(对我来说C:\Program Files (x86)\Mega-Nerd\libsndfile\lib
)
libsndfile-1.dll
(C:\Program Files (x86)\Mega-Nerd\libsndfile\bin
)
然后右键单击项目,然后转到构建选项...>搜索目录>编译器,然后添加sndfile.h
目录的地址。
然后,转到构建选项...>链接器设置>链接库:并添加地址libsndfile-1.lib
。
最后,将libsndfile-1.dll
复制到将创建.exe
文件的位置(对我来说,它位于MyProject\bin\Debug
中)。
这是一个简单的示例代码:
#include <stdio.h>
#include <stdlib.h>
#include "sndfile.h"
int main(void)
{
char *inFileName;
SNDFILE *inFile;
SF_INFO inFileInfo;
int fs;
inFileName = "noise.wav";
inFile = sf_open(inFileName, SFM_READ, &inFileInfo);
sf_close(inFile);
fs = inFileInfo.samplerate;
printf("Sample Rate = %d Hz\n", fs);
return 0;
}
输出为:
Sample Rate = 44100 Hz