Domanda

Sto cercando di entrare in programmazione C ++, e sono abbastanza in lotta contro i piccoli dettagli. In questo momento, sto cercando di ottenere il frammento di seguito al lavoro, ea quanto pare sarà la compilazione, ma non collegare. (Messaggio di errore è un fondo a questo post)

sto usando libsndfile per aprire i file audio, e il linker non sembrano trovare i file di libreria corrent per esso. Questo è su OS X 10.5.

Ho scaricato libsndfile da mega-nerd.com e installato tramite il configure, make, procedura ususal sudo make install. C'è qualcos'altro che devo fare?

Modifica:. Ho macports installati sul mio sistema, se questo è di alcuna preoccupazione

Ecco il mio codice:

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

Ed ecco il messaggio di errore completo:

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
È stato utile?

Soluzione

È necessario collegare in biblioteca. Il comando compilatore dovrebbe essere simile a:

g++ mystuff.cpp -lsndfile

Altri suggerimenti

Per collegare la libreria in Xcode, selezionare la destinazione del progetto, aggiungere un nuovo elemento a Link binari con le librerie, e trovare il libsndfile.1.dynlib sul computer.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top