Qt 5.15.2 Windows平台QMultimediaWidgets运行启动报错求助
问题解决步骤
阶段1:解决0xC0000135启动崩溃错误
该错误是Windows下典型的依赖DLL缺失报错,Qt5Multimedia模块默认依赖Qt5Network.dll,你的初始CMake配置未将Network加入依赖列表,导致POST_BUILD阶段没有自动拷贝该DLL到输出目录。
解决方案:将Network正式加入Qt依赖列表
修改CMakeLists.txt中对应的配置行:
set(REQUIRED_LIBS Core Gui Widgets Network Multimedia MultimediaWidgets) set(REQUIRED_LIBS_QUALIFIED Qt5::Core Qt5::Gui Qt5::Widgets Qt5::Network Qt5::Multimedia Qt5::MultimediaWidgets)
修改后重新构建即可解决启动崩溃问题。
阶段2:解决no service found for "org.qt-project.qt.mediaplayer"错误
该错误是因为Qt Multimedia的媒体播放能力依赖插件实现,你当前的CMake脚本仅拷贝了平台相关插件,缺失了多媒体服务插件。
解决方案:在CMake的POST_BUILD逻辑中补充多媒体相关插件的拷贝规则,在原有platforms插件拷贝逻辑后添加如下代码:
# 拷贝多媒体服务插件,解决媒体服务找不到问题 if (EXISTS "${QT_INSTALL_PATH}/plugins/mediaservice") add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD COMMAND ${CMAKE_COMMAND} -E make_directory "$<TARGET_FILE_DIR:${PROJECT_NAME}>/plugins/mediaservice/") file(GLOB MEDIASERVICE_PLUGINS "${QT_INSTALL_PATH}/plugins/mediaservice/*${DEBUG_SUFFIX}.dll") foreach(PLUGIN ${MEDIASERVICE_PLUGINS}) add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy "${PLUGIN}" "$<TARGET_FILE_DIR:${PROJECT_NAME}>/plugins/mediaservice/") endforeach() endif () # 可选:拷贝音频插件,确保音频输出正常 if (EXISTS "${QT_INSTALL_PATH}/plugins/audio") add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD COMMAND ${CMAKE_COMMAND} -E make_directory "$<TARGET_FILE_DIR:${PROJECT_NAME}>/plugins/audio/") file(GLOB AUDIO_PLUGINS "${QT_INSTALL_PATH}/plugins/audio/*${DEBUG_SUFFIX}.dll") foreach(PLUGIN ${AUDIO_PLUGINS}) add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy "${PLUGIN}" "$<TARGET_FILE_DIR:${PROJECT_NAME}>/plugins/audio/") endforeach() endif ()
额外说明
- qmake构建可以正常运行是因为qmake配套的windeployqt工具会自动识别所有依赖的Qt插件并拷贝到输出目录,手动写CMake拷贝逻辑时容易遗漏模块对应的插件。
- 若修改后仍无法正常播放视频,可先更换常见的H.264编码MP4文件测试,排除系统缺少WMV格式解码器的问题。
内容的提问来源于stack exchange,提问作者Flavien Feral
相关产品推荐
相关产品推荐

