Windows下QAudioDeviceInfo::availableDevices无返回设备问题求助
解决VS2015下Qt多媒体设备枚举为空的问题
刚好我之前在VS2015 Community + Qt的环境下碰到过几乎一模一样的问题,结合当时的排查经验,给你几个针对性的解决方向:
1. 检查预编译Qt的音频后端插件
很多精简版的预编译Qt会砍掉Windows平台的音频后端支持(比如WASAPI、DirectShow),这是最常见的原因:
- 打开你的Qt安装目录,找到
plugins/audio文件夹,看看有没有qtaudio_windows.dll这类插件文件; - 要是没有的话,优先换一个完整的预编译Qt版本(毕竟你说只能用预编译版本)。
2. 确认项目配置没遗漏
虽然你提到已经加了QtMultimedia,但VS2015的Qt项目偶尔会有模块加载不彻底的情况:
- 打开
.pro文件,确保明确写了QT += multimedia;如果是VS直接创建的项目,去Qt项目设置里手动勾选Multimedia模块; - 运行程序前,把QtMultimedia相关的DLL(比如
Qt5Multimedia.dll)和plugins/audio下的插件一起复制到程序输出目录,运行时缺失插件绝对会导致设备枚举失败。
3. 系统权限与设置排查
Windows下音频设备访问会受权限和系统设置限制:
- 右键以管理员身份启动程序,试试能不能枚举到设备;
- 检查系统音频设置,确保麦克风/扬声器没被禁用,且设为默认设备;
- 要是用的Win10及以上版本,去系统设置的「隐私-麦克风」里,确认你的程序有访问麦克风的权限。
4. 代码细节再核对
有时候代码里的小疏忽也会坑人:
- 确认你枚举的是
QAudio::AudioInput(输入设备),别不小心写成AudioOutput了; - 加一段调试代码输出设备列表,比如:
#include <QAudioDeviceInfo> #include <QDebug> // 放在测试代码里 foreach(const QAudioDeviceInfo &device, QAudioDeviceInfo::availableDevices(QAudio::AudioInput)) { qDebug() << "检测到输入设备:" << device.deviceName(); }
如果连这段代码都没输出,那基本可以锁定是环境或插件的问题。
5. 确认Qt版本与VS2015兼容
VS2015对应的编译器是MSVC2015,你用的预编译Qt版本必须是针对MSVC2015编译的(比如Qt5.6~Qt5.9之间的版本)。要是用了针对MSVC2017/2019编译的Qt,就会出现模块加载异常,自然枚举不到设备。
内容的提问来源于stack exchange,提问作者Chris Reffett
相关产品推荐
相关产品推荐

