未定义的符号:_sf_open(OSX上的简单音频内容)

时间:2009-04-26 21:26:04

标签: c++ linker libsndfile

我正在尝试进入C ++编程,而且我正在努力反对这些小细节。现在,我正在尝试让下面的代码段工作,显然它会编译,但不会链接。 (错误信息是这篇文章的底部)

我正在使用libsndfile打开音频文件,而链接器似乎找不到相应的库文件。这是在OS X 10.5上。

我从mega-nerd.com下载了libsndfile,并通过ususal configuremakesudo make install程序安装了它。还有什么我需要做的吗?

编辑:我的系统上安装了macport,如果有任何问题的话。

这是我的代码:

#include <iostream>
#include <string>
#include <sndfile.h>
#include "stereoSplit.h"
using namespace std;

int stereoSplit(string filename)
{
    cout << filename;
    SF_INFO sfinfo;
    sfinfo.format = 0;
    SNDFILE * soundfile;
    soundfile = sf_open( filename.c_str(), SFM_READ, &sfinfo );
    return 0;
}

int main (int argc, char const *argv[])
{
    return stereoSplit("testStereo.wav");
}

这是完整的错误消息:

Undefined symbols:
  "_sf_open", referenced from:
      stereoSplit(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)in cc3hvkkk.o
ld: symbol(s) not found
collect2: ld returned 1 exit status

2 个答案:

答案 0 :(得分:3)

您需要在库中链接。您的编译器命令应如下所示:

g++ mystuff.cpp -lsndfile

答案 1 :(得分:-1)

要在Xcode中链接库,请选择项目目标,将新项添加到使用库链接二进制文件,然后在计算机上找到libsndfile.1.dynlib。