web-dev-qa-db-ja.com

他のコンピューターでQt5アプリケーションを実行する方法(Windows 7)

Windows 7UltimateでQt5.0.2を使用して簡単なアプリケーションを開発しました。コンパイラとして、QtCreatorはMSVC2012_64ビットを使用しました。また、アプリケーションを他のコンピューターに移動できません。それは動作しません。 Qtアプリケーションには、見つからないDLLが必要です。依存関係エクスプローラーは、以下の.dllsが見つからないと見なします。どこで見つけることができますか?なぜこの問題はそれほど広範囲に広がっているのですか? Qtで開発された.exeを他のコンピューターで動作させることができないと、すべての人が不満を漏らしています。 enter image description here

EDIT1:ところで、インターネットからダウンロードしたDCOMP.dllを追加すると、見つからないdllが現在の2〜3倍になります:)

EDIT2:他のコンピューター(Windows 7 Home Premium)でexeファイルをダブルクリックすると、ロードされて効果がなく、エラーもまったく表示されないことにも注意してください。

12
Narek

これは私が必要としたdllのリストであり、またC:\Qt\Qt5.0.2\5.0.2\mingw47_32\plugins\platformsフォルダーをコピーしました。

enter image description here

これだけでうまくいきました。ところで、私はWindows 7 Ultimate64xとQt5.0.2 for Windows 32ビット(MinGW 4.7、650 MB)パッケージをQtに使用しています。

編集:QtCreatorの.dllをコピーする必要がある場合もあります。また、次の内容のqt.confという名前のファイルが必要な場合もあります(@Renatoの回答からコピー)。

[Paths]

Libraries=./platforms
10
Narek

ファイルを追加するだけですqt.conf次のコンテンツを含むアプリディレクトリへ

[Paths]

Libraries=./platforms

次に、同じアプリディレクトリに、ディレクトリC:\ Qt\Qt5.1.1\Tools\QtCreator\binにあるサブディレクトリ「プラットフォーム」をコピーします。

それで全部です。

Qtcore.dllはqtインストールの内部パスでコンパイルされるため、これは解決します。 (私はワイを知りません!)。アプリが起動すると、qt.confは常にqtcoreによって読み取られるため、「プラットフォーム」のライブラリが含まれ、アプリはどのホストでもまったく機能します。

警告:qtcoreとplatformsのサブディレクトリは同じqtインストールからのものである必要があります。

英語で申し訳ありませんが、解決策はうまくいきます。

7
Renato

最近のQt(少なくともQt 5.2以降)には「windeployqt.exe」が付属しています。これは、コンパイル済みプログラムを指すと(そして、私のように使用している場合は、「-」の追加引数として使用されます。 QtQuickプログラムのqmldirpath/to/QML/files ")は、コンパイルされたプログラムが現在存在するのと同じディレクトリに、必要なすべてのDLLを吐き出す必要があります。たとえば、ローカルのビルドマシンで自分自身のために、次のように実行しました。

    windeployqt --qmldir C:\Code\AppSource C:\Code\build-msvc2010\release

これは、Qt5.5を使用する$ PATH(または、Windowsの用語では%PATH%;))のQt\binディレクトリを使用していますが、5.2と5.3でも同じことを行っています。

コンパイラとしてMSVCを使用している場合、IIRCはそれらのDLL(私の場合はmsvc2010、つまりmsvcp100.dllとmsvcr100.dll)を手動でコピーする必要がありましたが、間違ったことを覚えている可能性があります。

3
keithzg

あなたの助けの人々に感謝します!

私にとっては、qwindows.dll/platformsディレクトリに追加するだけでは、どういうわけかそれをカットできませんでした。
pluginsディレクトリ全体をアプリケーションのバイナリディレクトリにぶっきらぼうにコピーし、次の内容のqt.confファイルを作成することで、ようやくすべてが機能するようになりました。

[Paths]
Plugins=./plugins
0
Daan