2016-04-28 11 views
0

Я использую libsndfile и portaudio для воспроизведения звука с .wav файла, и я получаю некоторую странную неопределенную ссылку ошибка при использовании sf_open(const char*, int, SF_INFO*) Перед показывая ошибки, вот некоторые основные сведения: я использую MinGW 3.21 (не могу обновить из-за ограничений IDE) в Windows 10, а CMake - как моя система сборки. Я подтвердил, что const char*, прошедший до sf_open, является допустимым именем файла, и я проверил, что никакие другие строки кода не вызывают эту ошибку компиляции. Не мудрствуя лукаво, есть некоторые прекрасные ошибки:libsndfile - sf_open(): (? В <code>time.h</code> ...) Неопределенные ссылки в time.h

libsndfile/lib/libsndfile.a(aiff.o): In function time': 
c:/dwimperl/c/bin/../lib/gcc/i686-w64-mingw32 
/4.4.7/../../../../i686-w64-mingw32/include/time.h:242: 
undefined reference to _time32' 

Это отпечатанные несколько раз, вероятно, потому, что функция time используется много в sf_open хотя я понятия не имею, почему. Это происходит так:

In function `gmtime': 
c:/dwimperl/c/bin/../lib/gcc/i686-w64- 
mingw32/4.4.7/../../../../i686-w64-mingw32/include/time.h:240: 
undefined reference to `_gmtime32' 

Эти ошибки не подразумевают никакой корреляции между sf_open и time.h, но я даже попробовал следующее,

#include<sndfile.h> 

int main { 
    sf_open(nullptr, 0, nullptr); 
    return 0; 
} 

и получил тот же результат. У меня есть libsndfile-1.dll в том же каталоге, что и мои скомпилированные двоичные файлы, и я связываюсь с обоими libsndfile.a и libsndfile.dll.a. Я пробовал только ссылку на libsndfile.a с тем же результатом. Тем не менее, я попытался ссылки только на libsndfile.dll.a и программа компилируется, но затем упал, говоря:

An error occured while using the portaudio stream 
Error number: -9984 
Error message: Incompatible host API specific stream info 

Я не уверен, является ли или нет, что-то для другой вопрос, но я думал, что я бы упомянуть об этом, видя что sf_open, неисправная функция, похоже, что-то делает с информацией о потоке. В любом случае, это насколько я понял. Помощь приветствуется!

ответ

0

Посмотрите, что я такой гений, отвечая на вопрос, задавая его, а затем не замечая. Иногда мне интересно, как я все еще жив. В любом случае, это было просто. Не связывайте libsndfile.a, только libsndfile.dll.a. Это все. Ошибка PortAudio была чем-то совершенно несвязанным. Извините за идиотизм, надеюсь, что это поможет хотя бы одному человеку ...?

 Смежные вопросы

  • Нет связанных вопросов^_^