我想用Qt5容纳自己,所以我开了一个非常小的MP3播放器。它在Linux和Windows 7上编译,均为64位。
在Windows上运行时,所选的mp3文件只有在QtCreator中启动程序时才会开始播放。当我启动独立(共享编译)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的目录内容
您可以查看完整的源@ 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的好印象,也许我应该看一个更可靠的播放库。但是,如果它只是开始播放我会很高兴。
答案 0 :(得分:1)
使用DLL Export Viewer查看 .exe 是指正确的 .dlls 。
有时人们安装了多个Qt / Phonon版本,而PATH
环境变量并未指向这些DLL所在的目录。
另外,请确保selectedFile
具有该文件的完整路径。在之后检查路径是否有效是个好主意。
selectedFile = fileDialog.getSelectedPath();
使用:
QFile file( selectedFile );
if( !file.exists() )
{
qDebug() << "!!! Invalid file: " << selectedFile;
return;
}