Инициализация PortAudio: ошибка хоста

Я пытаюсь создать приложение PortAudio на 64-разрядной версии Debian Wheezy GNU/Linux. Я прочитал документацию о том, как добавить библиотеку, и она компилируется без ошибок.

Теперь, когда я хочу инициализировать PortAudio с помощью этого скрипта:

#include <stdio.h>
#include "portaudio.h"

int main(){
    PaError err = Pa_Initialize();
    if(err != paNoError){
        fprintf(stderr, "Pa_Initialize error: %s\n", Pa_GetErrorText(err));
        return 1;
    }
    return 0;
}

Я получаю следующий вывод: Pa_Initialize error: Host error.

Когда я пытаюсь запустить Audacity, который также основан на PortAudio, я получаю следующие ошибки:

ALSA lib pcm.c:2217:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.rear
ALSA lib pcm.c:2217:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.center_lfe
ALSA lib pcm.c:2217:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.side
ALSA lib pcm_dmix.c:957:(snd_pcm_dmix_open) The dmix plugin supports only playback stream
audacity: symbol lookup error: audacity: undefined symbol: Pa_GetStreamHostApiType

И когда я пытаюсь вызвать эту функцию:

const PaHostErrorInfo* hostError;
hostError = Pa_GetLastHostErrorInfo();

Я получаю следующую ошибку: Undefined reference to 'Pa_GetLastHostErrorInfo'

Как я могу правильно инициализировать PortAudio и что не так с моим хостом; требует ли PortAudio, чтобы я что-то делал с PulseAudio?

Я уже пробовал нижнее решение этой темы http://ubuntuforums.org/showthread.php?t=1756822, потому что я думал, что это как-то связано с конфигурацией файлов библиотеки. Но это тоже не сработало и не меняет ошибку.


person tversteeg    schedule 09.03.2013    source источник
comment
Вы ознакомились с документацией follow_noreferrer"ize   -  person Grijesh Chauhan    schedule 09.03.2013
comment
Да, я сделал, но это не помогло мне решить проблему, это не проясняет ошибку.   -  person tversteeg    schedule 09.03.2013
comment
Чтение `ошибка поиска символа: дерзость: неопределенный символ̀, похоже, что есть проблема с файлами библиотеки - например, если дерзость была скомпилирована с заголовками PortAudio, которые не соответствуют файлам .so в /usr/lib (может быть, другая версия? )...   -  person neodelphi    schedule 10.03.2013
comment
@Thomas Извините, я хотел бы помочь вам, но я понятия не имею, что ищу в документации, но для меня это невозможно ... Вы можете отправить их по почте.   -  person Grijesh Chauhan    schedule 10.03.2013
comment
@GrjeshChauhan Нет проблем, я напишу им, если не найду ответ сам. @neodelphi Это действительно похоже на проблему с библиотекой, но я использовал метод Debian apt-get install по умолчанию для установки Audacity, поэтому любые ошибки в несовместимых версиях должны возникать таким образом.   -  person tversteeg    schedule 10.03.2013


Ответы (2)


Ошибка audacty выглядит так, как будто что-то неправильно настроено. Чтобы разобраться в проблеме, попробуйте вызвать эту функцию, чтобы узнать, в чем заключалась ошибка хоста:

const PaHostErrorInfo* Pa_GetLastHostErrorInfo (void)

http://portaudio.com/docs/v19-doxydocs/portaudio_8h.html#aad573f208b60577f21d2777a7c5054e0

person Bjorn Roche    schedule 10.03.2013
comment
Когда я пытаюсь вызвать это: const PaHostErrorInfo* hostError = Pa_GetLastHostErrorInfo();, я получаю следующую ошибку: Undefined reference to 'Pa_GetLastHostErrorInfo', действительно похоже, что что-то неправильно настроено. - person tversteeg; 10.03.2013
comment
Похоже, проблема с динамической компоновкой как здесь, так и с дерзостью. Вроде не может найти библиотеки PortAudio. - person Bjorn Roche; 10.03.2013
comment
Ну да, вы могли бы так подумать, но я могу вызвать функцию, как описано в моем вопросе. - person tversteeg; 10.03.2013

После некоторого времени изучения проблемы я сдался и попытался переустановить PortAudio из исходного кода, удалив его и собрав заново. И, к счастью, на этот раз это сработало!

Так что я думаю, что это была ошибка, которая была исправлена ​​​​в новой версии.

person tversteeg    schedule 28.03.2013