gpt4 book ai didi

c++ - QMediaPlayer 在 QtCreator 外部启动时无法在 Windows 上开始播放

转载 作者:太空宇宙 更新时间:2023-11-04 11:58:18 26 4
gpt4 key购买 nike

我想适应 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 的目录内容

  • 文件夹“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、Qt5Widgets.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 Export Viewer查明您的 .exe 是否引用了正确的 .dll

有时人们安装了多个 Qt/Phonon 版本并且 PATH 环境变量没有指向这些 DLL 所在的目录。

此外,请确保 selectedFile 具有文件的完整路径。在以下情况之后检查路径是否有效是个好主意:

selectedFile = fileDialog.getSelectedPath();

与:

QFile file( selectedFile );
if( !file.exists() )
{
qDebug() << "!!! Invalid file: " << selectedFile;
return;
}

关于c++ - QMediaPlayer 在 QtCreator 外部启动时无法在 Windows 上开始播放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15166425/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com