我想用C读一个.wav文件,类似于Matlab的wav read命令。我偶然发现这个图书馆,这似乎是解决办法。但是有人能解释一下如何安装这个库以便我可以使用它的功能吗?(我以前从来没有这样做过,所以请帮忙)。我试着包含sndfile.h,但是像cannot find -lsndfile-1.lib
这样的错误突然出现了。我相信这是因为我没有把图书馆整合好。
最佳答案
第一件事是安装库(我之所以选择libsndfile-1.0.28-w32-setup.exe
是因为我使用预先安装的MinGWcodeblocks-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
中)。
下面是一个简单的示例代码:
#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;
}
输出为:
.exe