Windows 7UltimateでQt5.0.2を使用して簡単なアプリケーションを開発しました。コンパイラとして、QtCreatorはMSVC2012_64ビットを使用しました。また、アプリケーションを他のコンピューターに移動できません。それは動作しません。 Qtアプリケーションには、見つからないDLLが必要です。依存関係エクスプローラーは、以下の.dll
sが見つからないと見なします。どこで見つけることができますか?なぜこの問題はそれほど広範囲に広がっているのですか? Qtで開発された.exe
を他のコンピューターで動作させることができないと、すべての人が不満を漏らしています。
EDIT1:ところで、インターネットからダウンロードしたDCOMP.dll
を追加すると、見つからないdllが現在の2〜3倍になります:)
EDIT2:他のコンピューター(Windows 7 Home Premium)でexeファイルをダブルクリックすると、ロードされて効果がなく、エラーもまったく表示されないことにも注意してください。
これは私が必要としたdllのリストであり、またC:\Qt\Qt5.0.2\5.0.2\mingw47_32\plugins\platforms
フォルダーをコピーしました。
これだけでうまくいきました。ところで、私はWindows 7 Ultimate64xとQt5.0.2 for Windows 32ビット(MinGW 4.7、650 MB)パッケージをQtに使用しています。
編集:QtCreatorの.dllをコピーする必要がある場合もあります。また、次の内容のqt.conf
という名前のファイルが必要な場合もあります(@Renatoの回答からコピー)。
[Paths]
Libraries=./platforms
ファイルを追加するだけですqt.conf
次のコンテンツを含むアプリディレクトリへ
[Paths]
Libraries=./platforms
次に、同じアプリディレクトリに、ディレクトリC:\ Qt\Qt5.1.1\Tools\QtCreator\binにあるサブディレクトリ「プラットフォーム」をコピーします。
それで全部です。
Qtcore.dllはqtインストールの内部パスでコンパイルされるため、これは解決します。 (私はワイを知りません!)。アプリが起動すると、qt.confは常にqtcoreによって読み取られるため、「プラットフォーム」のライブラリが含まれ、アプリはどのホストでもまったく機能します。
警告:qtcoreとplatformsのサブディレクトリは同じqtインストールからのものである必要があります。
英語で申し訳ありませんが、解決策はうまくいきます。
最近の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)を手動でコピーする必要がありましたが、間違ったことを覚えている可能性があります。
あなたの助けの人々に感謝します!
私にとっては、qwindows.dll
を/platforms
ディレクトリに追加するだけでは、どういうわけかそれをカットできませんでした。
pluginsディレクトリ全体をアプリケーションのバイナリディレクトリにぶっきらぼうにコピーし、次の内容のqt.conf
ファイルを作成することで、ようやくすべてが機能するようになりました。
[Paths]
Plugins=./plugins