7

解決策

QtSDKで作成したアプリを、インストールされていないマシンで実行したいと考えていますQt

DLL'sフォルダーからプロジェクトのリリースにコピーしようとしましたBINが、うまくいきませんでした。

私は次のことを試しました:

  • dll'sすべてのフォルダをコピーしますd:\Qt\Qt5.0.1\5.0.1\mingw47_32\bin
  • そして、それを私のプロジェクトのフォルダーに貼り付けました:d:\projects\mybrowser\mybrowser-build-Desktop_Qt_5_0_1_MinGW_32bit-Release\release
  • そしてそれを別のコンピューターに送信しますwithout Qt
  • コンピューターに、アプリケーションwithout Qtをインストールして実行しようとしましたvcredist_sp1_x86.exebrowsertest.exe

次のエラーが発生しました:

Microsoft Visual C++ ランタイム ライブラリ: このアプリケーションは、異常な方法で終了するようにランタイムに要求しました

Q:本当に知りたいこと:

Qt がインストールされていない他のコンピューター (Windows) で Qt に組み込まれたアプリケーションを実行するにはどうすればよいですか?

詳細:

  • Qt5.0.1 32ビット
  • mingw 4.7 32ビット
  • QtCreator 2.6.2
  • ウィンドウズ7 64ビット。
  • インテル i5

フォルダ:

  • D:\Qt\Qt5.0.1\5.0.1\mingw47_32
  • D:\Qt\Qt5.0.1\Tools\MinGW

Qt/Mingw:

  • D:\Qt\Qt5.0.1\5.0.1\mingw47_32\bin\qmake.exe
  • d:\Qt\Qt5.0.1\Tools\MinGW\bin\gcc.exe

ファイル.pro :

QT += webkitwidgets network core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = browsertest
TEMPLATE = app

RC_FILE = browser.rc

SOURCES += main.cpp\
 mybrowser.cpp

HEADERS += mybrowser.h

FORMS += mybrowser.ui

見逃した情報があれば、お知らせください。ありがたい

4

3 に答える 3

11

アプリケーションを配布するには、DLLをコピーする必要があります ( DLLのみが必要です)。

  1. またはから必要な DLLをコピーします。<DRIVE>:\Qt\Qt<Version_qt>\<Version_qt>\mingw<Version_mingw>\<DRIVE>:\Qt\Qt<Version_qt>\<Version_qt>\mingw<Version_mingw>\bin\

    例: C:\Qt\Qt5.2.0\5.2.0\mingw48_32\またはC:\Qt\Qt5.2.0\5.2.0\mingw48_32\bin

  2. アプリケーションのフォルダーを貼り付けます。

  3. 次に、その中のフォルダーをコピーします<DRIVE>:\Qt\Qt<Version_qt>\<Version_qt>\mingw<Version_mingw>\plugins

    例えば。: C:\Qt\Qt5.2.0\5.2.0\mingw48_32\plugins

  4. アプリケーションのフォルダーを貼り付けます。

注: この例 (以下) では、別の場所から DLL をコピーし、デバッグ DLL ( Debugコンパイルするためだけに使用) を削除する必要がありました。

debug dlls「d.dll」で終わることに注意してください。たとえば、 Qt5Core.dllQt5Cored.dllまたはQt5Concurrent.dllQt5Concurrentd.dllのように、「d.dll」で終わるものはコピーしないでください。

構造は次のようになります (例):

  • c:\project\app.exe ( Qtで作成されたアプリ)
  • c:\project\Qt5Core.dll ( qt/mingwフォルダーまたはqt/mingw/bindll )
  • c:\project\platforms ( qt/mingw/pluginsフォルダーのフォルダー)
  • c:\project\platforms\qminimal.dll ( qt/mingw/plugins/platformsフォルダーのdll )

mingwが必要になるのは一部のDLLだけなので、 Dependency Walker 2.2の使用をお勧めします。

結果は次のようになります (すべての dll が必要なわけではなく、プロジェクトの種類によって異なる場合があります)。 アプリフォルダー


おかげで:

  • @MartinBeckettの+1は、必要なDLLを見つけるためのプログラムを示してくれました。

  • @WouterHuysentruit の +1、私が示したアプリケーションのおかげで、mingw\pluginsフォルダーの内容がアプリケーション フォルダーに直接移動する必要があることがわかりました。

  • @WouterHuysentruitあなたの答えは正しいと思いますが、あなたが言ったので、もっと簡単な説明をします。とにかくありがとう。

于 2013-04-15T23:51:54.680 に答える
2

「Microsoft Visual C++ ランタイム ライブラリ: このアプリケーションは、ランタイムに通常とは異なる方法で終了するよう要求しました」

これは通常のバグか、互換性のない dll が混在している場合があります。exe
で (無料の)依存プログラムを使用して、実際に使用している dll を確認してください。おそらく、Qt のすべてをリンクしているわけではありません。

一部の Qt ライブラリは実行時にプラグイン フォルダーからロードされますが、ほとんどの場合、画像形式とデータベース接続ですが、このエラーは発生しません。

于 2013-04-15T19:48:47.387 に答える
0

windeployqt (QT 5.2+ で提供) が (ほとんどの?) 作業を行う必要があります。

于 2015-06-15T13:45:03.280 に答える