C 错误:libsndfile 中的“对'sf_open'的未定义引用”

C error: "Undefined reference to 'sf_open'" from libsndfile

提问人:Felipe Jacheto 提问时间:12/29/2015 更新时间:12/29/2015 访问量:3733

问:

我正在使用 Code::Blocks 来测试一些代码,但我无法复制此代码:

#include <stdio.h>
#include <stdlib.h>
#include <sndfile.h>

int main()
{
SNDFILE *sf;

sf = sf_open("file.wav",SFM_READ,&info); //error happens in this line

...

错误是“对'sf_open'的未定义引用”,这不仅发生在 sf_open 上,还发生在 sndfile.h 中的任何函数上。

实际上,这是我为到达这里所做的:

  • 我首先从超级书网站下载并安装了适用于 Windows x64(我使用的是 Windows 10)的 libsndfile,并尝试运行此代码......没有用,这次的错误是“sndfile.h:没有这样的文件或目录”

  • 所以过了一会儿,我去了安装目录(C:\Program Files\Mega-Nerd\libsndfile\include)并将标头复制到CodeBlocks defaut目录(C:\Program Files (x86)\CodeBlocks\MinGW\include),然后我再次尝试,它终于找到了标题!但是现在这个错误正在发生......

所以我想我没有以正确的方式打开标题,我对此没有太多经验......我在互联网上找不到答案,我希望我能在这里得到一些运气,谢谢!

C 标头 代码块 undefined-reference libsndfile

评论

0赞 Jeremy 12/29/2015
您需要链接到 libsndfile。Damon 之前曾描述过如何在 Code::Blocks 中链接到库。

答:

1赞 zon7 12/29/2015 #1

正如 Jeremy 所说,除了 sndfile.h 的 include 之外,您还必须链接到 libsndfile 库(它应该是 .lib 或 .a 文件。

要链接它,只需按照他提供的链接进行操作