0

Visual studio 2012 32 ビットと Qt5 SDK を使用して、Visual studio Qt アドオンを使用して Qt プロジェクトを作成しました。Windows 7 アルティメット OS を使用しています。

基本的に次のライブラリを使用する QApplication GUI プロジェクトを作成しました。

qtmain.lib
Qt5Core.lib
Qt5Gui.lib
Qt5Network.lib
Ws2_32.lib
Winhttp.lib
Winmm.lib
Qt5Widgets.lib
Qt5PlatformSupport.lib
imm32.lib

そして、エラーなしでアプリケーション バイナリをビルドすることに成功しました。

次のdllがコピーされたテストマシンのWindows 7デスクトップでこのアプリケーションを実行しようとしています:

icudt51.dll
icuin51.dll
icuuc51.dll
libEGL.dll
libGLESv2.dll
Qt5Core.dll
Qt5Network.dll
Qt5GUI.dll
Qt5Widgets.dll
qwindows.dll [copied from msvc2012\plugins\platform folder ]

エラーが発生します:

プラットフォーム プラグイン「windows」の読み込みに失敗しました。利用可能なプラットフォームは次のとおりです。アプリケーションを実行しようとしている間。

私は何を逃したでしょうか?Windowsプラットフォームで実行するにはどうすればよいですか? この問題のトラブルシューティングを手伝ってください。

以前にこの問題について投稿されたリンクをたどりました。しかし、どれも私の問題を解決していません。不足している構成は何ですか?

4

4 に答える 4

2

さらに別の解決策: メイン関数などの早い段階で、QCoreApplication::addLibraryPath() を呼び出します。簡単な例:

std::ifstream configurationStream("whateverNameYouWant.conf");
std::stringstream configurationText;
configurationText << configurationStream.rdbuf();
auto ct = configurationText.str();

if (!ct.empty())
    QCoreApplication::addLibraryPath(QString::fromStdString(ct));

ここでは、パスがプログラムにハードコーディングされないように、独自の発明の .conf ファイルからパスをロードします。私はこのファイルを発明したので、そのフォーマットを管理しています。この場合、パスのみが含まれます。私が使用している実際のパスは次のとおりですC:/qt5/qtbase/plugins。そのディレクトリにはplatforms/qwindows.dll、およびその他のそのようなファイルが含まれています。Qtファイルがインストールされている場所に応じて、自分のケースのパスを調整できます。

Qt で指定された形式を使用して、標準qt.confファイルを使用して、独自のプログラムに特別なコードを追加することなく、いくつかの特別なパス (このプラグイン パスを含む) を自動的にロードすることも可能であると思われます: http: //doc.qt.io/qt-5/qt-conf.html ...しかし、何らかの理由でそれを機能させることができませんでした。単純な間違いを犯しているのかもしれませんが、わかりません。

于 2016-07-03T19:43:25.217 に答える