初始化 PortAudio:主机错误

Posted

技术标签:

【中文标题】初始化 PortAudio:主机错误【英文标题】:Initializing PortAudio: Host error 【发布时间】:2013-02-25 05:32:47 【问题描述】:

我正在尝试在 Debian Wheezy 64 位 GNU/Linux 上创建一个 PortAudio 应用程序。我阅读了有关如何添加库的文档,它编译时没有错误。

现在当我想使用这个脚本初始化 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.

当我尝试运行同样基于 PortAudio 的 Audacity 时,我收到以下错误:

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的底层解决方案,因为我认为它与库文件的配置有关。但这也不起作用,也不会改变错误。

【问题讨论】:

你经历过Pa_Initialize documentation first 是的,但它没有帮助我解决问题,也没有澄清错误。 读取`符号查找错误:大胆:未定义符号̀,听起来库文件有问题 - 就像使用与 /usr 中的 .so 文件不匹配的 PortAudio 头编译的大胆/lib(也许是不同的版本?)... @Thomas 对不起,我希望我能帮助你,但我不知道我在文档中搜索但对我来说是不可能的......你可以邮寄他们。 @GrijeshChauhan 没问题,如果我自己找不到答案,我会邮寄给他们。 @neodelphi 听起来确实是库问题,但我使用默认的 Debian apt-get install 方法来安装 Audacity,因此不兼容版本中的任何错误都应该以这种方式提出。 【参考方案1】:

大胆错误看起来像是配置错误。要深入了解您的问题,请尝试调用此函数以找出主机错误:

const PaHostErrorInfo* Pa_GetLastHostErrorInfo ( void )

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

【讨论】:

当我尝试调用它时:const PaHostErrorInfo* hostError = Pa_GetLastHostErrorInfo(); 我收到以下错误:Undefined reference to 'Pa_GetLastHostErrorInfo',它确实看起来配置错误。 看起来像一个动态链接问题在这里和大胆。好像找不到 PortAudio 库。 好吧,你会这么认为,但我可以按照我的问题中所述调用该函数。【参考方案2】:

经过一段时间的研究,我放弃了这个问题,并尝试从源代码中重新安装 PortAudio,方法是删除它并重新构建它。谢天谢地,这次成功了!

所以我猜这是在新版本中得到解决的一个错误。

【讨论】:

以上是关于初始化 PortAudio:主机错误的主要内容,如果未能解决你的问题,请参考以下文章

使用portaudio回调已连接/未连接的设备?

PortAudio 不可靠:表达式“...”失败

如何修复 PyAudio、PortAudio 的安装问题:“致命错误 C1083:无法打开包含文件:'portaudio.h':没有这样的文件或目录”

curl错误码大全

原创NuGet 出现“无法初始化 PowerShell 主机,如果将你的 PowerShell 执行策略设置设置为 AllSigned ,请先打开程序包管理控制台以初始化该主机” 错误的解决方法

为啥winscp登不上去?显示错误 ‘收到太大的SFTP包 无法初始化SFTP协议。主机是SFTP服务器吗?’