0

mingw47 を使用して Qt 5.0 dekstop アプリケーションを開発しています。このアプリケーションで QtMultimedia を使用して、オーディオの録音と再生を行います。デバッグ用にテストしましたが、動作します。リリース用にビルドして実行可能ファイルを実行しようとすると、通常はデバッグ モードで再生できるオーディオ ファイルを再生できません。実行可能ファイルを実行する前に、次の dll を追加しました。

D3D_Compiler_43.dll、
icudt49.dll、
icuin49.dll、
icuuc49.dll、
libEGL.dll、
libgcc_s_sjlj-1.dll、
libGLESv2.dll、
liblibmpeg2_plugin.dll、
libstdc++-6.dll、
libwinpthread-1.dll、
Qt5Core.dll、
Qt5Gui.dll、
Qt5Multimedia.dll、
Qt5Network.dll、
Qt5Widgets.dll、
Qt5Xml.dll、
plugins/platforms/(すべての dll)、
plugins/mediaservice/(すべての dll)、
plugins/playlistformats(すべての dll)

おそらく何が間違っていますか?または、他に不足している dll は何ですか?

4

3 に答える 3

2

更新:使用windeployqt.exe!それは本当にうまくいきます。

http://doc.qt.io/qt-5/windows-deployment.html#the-windows-deployment-tool

windeployqt を使用する最も簡単な方法は、Qt インストールの bin ディレクトリ (例: ) を PATH 変数に追加してから実行することです。

windeployqt <path-to-app-binary>

アプリケーションをリリース モードで実行している間 (Qt Creator 内から動作している場合)、depends.exeを実行し、アプリケーションを指定します。

Qt フォルダーから参照されているすべての dll を書き留めます。

もっと時間をかけたい場合の別の方法:

Windows では使用中のフォルダーや dll を削除できないため、ファイルを削除しようとすることで手動で解決できます。したがって、Qt インストールのバックアップを作成してアプリケーションを実行し、使用するすべての dll に接続されていることを確認してから、Qt インストールのフォルダーとファイルを削除してみてください。Windows では、リリースで使用されているファイルを削除できません。

また、知りたい場合は、Windowsがdllを解決する方法を次に示します。

http://msdn.microsoft.com/en-us/library/7d83bc18(v=vs.80).aspx

編集: また、exe ディレクトリに plugins というフォルダーを作成する必要はありません。次のようになります。

Qt 4.x:

./myexe.exe
./QtCore.dll
./imageformats/qjpegd4.dll  // Note: there isn't a "plugins" folder here

Qt 5.x: (ここから取得)

The executable                   ./plugandpaint.exe
The Basic Tools plugin           ./plugins/pnp_basictools.dll
The ExtraFilters plugin          ./plugins/pnp_extrafilters.dll
The Qt Windows platform plugin   ./platforms/qwindows.dll
The Qt Core module               ./Qt5Core.dll
The Qt GUI module                ./Qt5Gui.dll
The Qt Widgets module            ./Qt5Widgets.dll

も実行し、コンピューターで dll を検索するパスqDebug() << QApplication::libraryPaths()をメモします。

それが役立つことを願っています。

于 2013-04-23T05:25:17.690 に答える
0

私は答えを見つけました。今、私のアプリケーションは動作します。実行ファイルの実行中にオーディオファイルを再生できます。

depends.exe には記載されていませんが、QMediaPlayer を使用する場合は、次の dll を追加する必要があります。

Qt5MultimediaWidgets
Qt5OpenGL

参照は次のとおりです: https://bugreports.qt-project.org/browse/QTBUG-30172

于 2013-04-24T03:42:00.050 に答える