一、问题现象
qt版本:6.5.3
蓝牙不可用:
qt.bluetooth: Dummy backend running. Qt Bluetooth module is non-functional.
二、问题原因
在 Windows 开发环境下使用 Qt + MinGW 时遇到 qt.bluetooth: Dummy backend running. Qt Bluetooth module is non-functional
错误,说明 Qt 的蓝牙模块无法正常工作。这是因为 MinGW 编译的 Qt 默认不支持 Windows 的蓝牙 API(仅 MSVC 支持)。
三、解决方案
使用MSVC编译器
使用MSVC编译器有很多方法,但我找到一个对小白最友好的方法,下载对应版本的Visual Studio
即可
1. 查看qt的MSVC版本
如果没有在下载组件的时候需要把MSVC勾选上
2. 安装MSVC编译器和Windows 11 SDK
打开Visual Studio Installer
,如点击修改(没安装vs的跳过这里直接看下载组件):
在工作负荷中勾选使用C++的桌面开发,以及Windows 11 SDK
:(如果电脑是win10 就选win10 不确定的可以11和10都选上)
在单个组件中勾选自己要安装的编译器:
然后下载等待安装完成即可,后面开始配置qt
3. qt配置MSVC编译器
打开Qt Creator
,进去kits,添加msvc编辑器
以上则已配置完成
4. 测试
配置时则可选择刚才配置好的MSVC编译器
5. 注意
我这边编译时出了又出了两个问题:(大家若也遇到给大家参考下)
5.1 问题1
编译时出现版本问题:QMAKE_MSC_VER,这是msvc版本切换时没对应上
解决方法:
找到对应qt版本目录下common文件夹下的msvc-version.conf文件添加自己msvc的版本号:
QMAKE_MSC_VER = 1920
我用的2019对应的是1920:下面几个版本可以参考
# MSVC 2022 (v143)
QMAKE_MSC_VER = 1930
# MSVC 2019 (v142)
# QMAKE_MSC_VER = 1920
# MSVC 2017 (v141)
# QMAKE_MSC_VER = 1910
改完保存重新编译即可
5.2 问题2
编译时遇到编码格式问题:
warning: C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
error: C2001: 常量中有换行符
解决方法:
QT界面菜单栏->编辑->Slect Encoding...->system>按编码保存
四、总结
在Windows平台开发Qt蓝牙应用时,必须使用MSVC编译器而非MinGW,通过安装匹配版本的Visual Studio和Windows SDK,并在Qt Creator中正确配置MSVC工具链,可解决"qt.bluetooth: Dummy backend running"问题。开发过程中需注意版本匹配和文件编码问题,建议采用UTF-8 with BOM编码格式以确保项目顺利编译运行。
以上参考博客:
Qt 添加MSVC2017编译器(2022年保姆级教程,不安装完整VS)_qt msvc2017-CSDN博客
关于 Qt使用MSVC版本编译出现“QMAKE_MSC_VER” 的解决方法_qmake msc ver-CSDN博客
qt.bluetooth: Dummy backend running. Qt Bluetooth module is non-functional | Qt Forum
[解决方法]C++ : warning C4819: 该文件包含不能在当前代码页(936)中表示的字符-CSDN博客
解决VS编译中文报错 error C2001:常量中有换行符_vs编译 error c2001: 常量中有换行符-CSDN博客
评论 (0)