私は 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 を開始しようとするディレクトリの内容です。
- 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で1回、Mingwで1回コンパイルしましたが、違いはありませんでした。
QMediaPlayer エラーをググってみましたが、そのほとんどはモバイル プラットフォームに関するものです。ただし、QMediaPlayer の印象は良くありませんでした。より信頼性の高い再生ライブラリを検討する必要があるかもしれません。ただし、再生が開始されるだけであれば幸いです。