Неопределенный Символ:_sf_open (Простой аудио материал на OSX)

StackOverflow https://stackoverflow.com/questions/791636

  •  16-09-2019
  •  | 
  •  

Вопрос

Я пытаюсь освоить программирование на C ++, и мне очень трудно разобраться в мелких деталях.Прямо сейчас я пытаюсь заставить приведенный ниже фрагмент работать, и, по-видимому, он будет компилироваться, но не связываться.(сообщение об ошибке находится в нижней части этого поста)

Я использую libsndfile чтобы открыть аудиофайлы, и компоновщик, похоже, не находит для этого файлы соответствующей библиотеки.Это на OS X 10.5.

Я скачал libsndfile с mega-nerd.com и установил его с помощью обычного configure, make, sudo 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
Это было полезно?

Решение

Вам нужно сделать ссылку в библиотеке.Ваша команда компилятора должна выглядеть примерно так:

g++ mystuff.cpp -lsndfile

Другие советы

Чтобы связать библиотеку в Xcode, выберите целевой проект, добавьте новый элемент для связи двоичного файла с библиотеками и найдите libsndfile.1.dynlib на вашем компьютере.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top