2009-04-26 69 views
2

我正在尝试进入C++编程,并且我正在努力应对小细节。现在,我试图让下面的代码片段工作,显然它会编译,但不能链接。 (错误消息是这篇文章的底部)未定义的符号:_sf_open(OSX上的简单音频内容)

我使用libsndfile来打开音频文件,并且链接器似乎没有找到它的corrent库文件。这是在OS X 10.5上。

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

编辑:我有我的系统上安装的macports,如果这是任何问题。

这里是我的代码:

#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 
+1

请你复制/粘贴编译器invokation行吗?这将有助于解决您的问题。 – 2009-04-26 21:30:46

回答

3

您需要链接到该库。你的编译器命令应该是这个样子:

g++ mystuff.cpp -lsndfile 
-1

要在Xcode链接库中,选择项目目标,添加一个新的项目链接二进制与图书馆,并找到自己的计算机上libsndfile.1.dynlib。