2009-04-26 9 views
2

Ich versuche, in C++ - Programmierung zu kommen, und ich kämpfe ziemlich gegen die kleinen Details. Im Moment versuche ich, den Code unten zu arbeiten, und anscheinend wird er kompilieren, aber nicht verknüpfen. (Fehlermeldung ist eine der unteren in diesem Beitrag)Nicht definiert Symbol: _sf_open (Einfaches Audio-Zeug auf OSX)

Ich benutze libsndfile, um Audiodateien zu öffnen, und der Linker scheint nicht die corrent Bibliotheksdateien dafür zu finden. Dies ist unter OS X 10.5.

Ich habe libsndfile von mega-nerd.com heruntergeladen und installiert über die üblichen configure, make, sudo make install Prozedur. Gibt es noch etwas, was ich tun muss?

Edit: Ich habe Macports auf meinem System installiert, wenn das von Interesse ist.

Hier ist mein Code:

#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"); 
} 

Und hier ist die komplette Fehlermeldung:

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

Könnten Sie bitte die Compiler-Aufrufzeile kopieren/einfügen? Es wird helfen, Ihr Problem anzugehen. –

+0

@yves sehen Neil Butterworths Antwort. Meine Zeile war g ++ stereoSplit.cpp -o split. Danke für deine Hilfe, ihr beide! – winsmith

Antwort

3

Sie müssen in der Bibliothek verknüpfen. Ihr Compiler-Befehl sollte ungefähr so ​​aussehen:

g++ mystuff.cpp -lsndfile 
-1

die Bibliothek in Xcode zu verknüpfen, wählen Sie das Projektziel, fügen Sie ein neues Element mit Bibliotheken binär zu verknüpfen, und finden Sie die libsndfile.1.dynlib auf Ihrem Computer.