我想适应 Qt5,所以我开始了一个非常小的 mp3 播放器。它可以在 64 位的 Linux 和 Windows 7 上编译。
但是,在 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 的目录内容
- 文件夹“平台”包括: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、Qt5Widgets.dll
- 咕噜声
您可以查看完整的源代码@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并没有给我留下好印象,也许我应该看一个更可靠的播放库。但是,如果它只是开始播放,我会很高兴。