我想用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\liblibsndfile-1.dll
然后右键单击项目并转到生成选项。。。>搜索目录>编译器并添加目录的地址。
c - 在C中使用libsndfile读取.wav文件-LMLPHP
然后,转到构建选项。。。>链接器设置>链接库:并添加C:\Program Files (x86)\Mega-Nerd\libsndfile\bin的地址。
c - 在C中使用libsndfile读取.wav文件-LMLPHP
最后,将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

10-08 04:12