QMediaPlayer在QtCreator外部启动时未在Windows上启动播放
QMediaPlayer not starting playback on Windows when started outside QtCreator
我想适应Qt5,所以我启动了一个非常小的mp3播放器。它在Linux和Windows7上编译,都是64位的。
然而,当在Windows上运行时,只有当我在QtCreator中启动程序时,选定的mp3文件才会开始播放。当我启动独立的(共享编译的(EXE时,程序会打开,但不是开始播放,什么也没发生(当在IDE中调试时,一切似乎都正常,我想有点像Heisenbug(。
当查看Processmonitor中的文件访问时,我看到了目录扫描,但当MP3应该打开时,什么也没发生。
也许我错过了复制一个DLL,但我没有提示缺少哪一个,所以这可能是另一个问题Dependency Walker输出(虽然它没有告诉我是哪些文件/函数导致了错误,也许我错过了(:
Error: At least one module has an unresolved import due to a missing export function in an implicitly dependent module.
Error: Modules with different CPU types were found.
Warning: At least one module has an unresolved import due to a missing export function in a delay-load dependent module.
这是我尝试启动EXE 的目录内容
- 文件夹"platforms",包括:qminimal.dll、qwindows.dll
- icudt49.dll、icuin49.dll、icuuc.49.dll
- IEShims.dll(在没有它的情况下工作,但Dependency Walker告诉它不见了(
- libEGL.dll
- libgcc_s_sjlj-1.dll
- libGLESv2.dll
- libstdc++-6.dll
- libwinpthread-1.dll
- Qt5Core.dll、Qt5Gui.dll、Qt5Multimedia.dll、Qt5Network.dll、QT5 Widgets.dll
- purr.exe
您可以查看完整的来源@https://github.com/VashSan/purr-我开始播放的部分源代码:
void PurrWindow::playMedia()
{
// [...]
// QMediaPlayer is a member of PurrWindow:
QUrl media = QUrl::fromLocalFile(selectedFile);
player.setMedia(media);
player.play();
}
我和MSVC2010一起编译了一次程序,和Mingw一起编写了一次,没有任何区别。
我试着在谷歌上搜索QMediaPlayer错误,但大多数都与移动平台有关。然而,它并没有给我留下QMediaPlayer的好印象,也许我应该寻找一个更可靠的播放库。然而,如果它能开始播放,我会很高兴。
使用DLL导出查看器查看您的.exe是否指向右侧.dlls.
有时,人们安装了多个Qt/Phonon版本,而PATH
环境变量并不指向这些DLL所在的目录。
此外,请确保selectedFile
具有该文件的完整路径。在之后检查路径是否有效是个好主意
selectedFile = fileDialog.getSelectedPath();
带有:
QFile file( selectedFile );
if( !file.exists() )
{
qDebug() << "!!! Invalid file: " << selectedFile;
return;
}
相关文章:
- 在Windows上坚持Jupyter:内核无法启动
- Windows 服务在启动时不进入_tmain
- 如何读取windows服务启动的控制台应用程序的输出
- 如何通过具有通信行参数的procdump启动Windows应用程序?
- (Windows 10) 在不更新的情况下重新启动C++
- 如何在Windows上通过QProcess启动提升的子进程?
- C ++服务在Windows关闭然后启动后不启动
- LG电视通过串行使用Windows服务在PC开机后运行约30秒 - 如何更快地启动服务
- 如何检测第一次Windows启动
- 如何从 Windows 上的服务在未登录用户的桌面上启动应用程序
- 如何在跨平台C++中以毫秒为单位获得系统启动/启动时间(它应该在Windows / IOS / Android / MA
- 在使用WiX进行主要升级后无法启动Windows服务
- 如何在 c++ 中调用 unicode 函数 CreateProcessW 来启动 Windows 可执行文件
- Qt:无法使用QProcess启动Windows控制台
- 如何以编程方式启动Windows应用商店应用程序
- 如何在Qt中启动windows应用程序
- 如何解决应用无法启动 Windows 10 "Threshold 2"更新(1511,内部版本 15086) 后STATUS_DLL_INIT_FAILED (0xc0000142)
- 从没有管理员权限的应用程序启动Windows服务(c++)
- 以编程方式重新启动Windows服务
- 如何从32位代码中以64位启动Windows进程