4

コンテキストは次のとおりです。

  • Windows 7 x64 で Qt を使用してプログラムを開発しました。
  • Qt 5.0.1、QtCreator 2.6.1、コンパイラ VS2010 にアップグレードしました。

今の状態:

  • My program runs fine in QtCreator but, when I tried it outside, I received several errors.
  • I checked this topic which gave me some answers: qtcreator - exe does work fine inside qtcreator but doesn't outside
  • I thus added Qt dlls and it helped, no more Missing Libraries messages.
  • Still, it would not run outside QtCreator (no more error message, I just doesn't run) so I added the platforms directory with both qminimal and qwindows dlls, it didn't help.
  • I also downloaded and added libEGL.dll as sugested, with no result.

I'm stuck and could really a little help.

4

3 に答える 3

5

これは、プログラムがその依存関係を読み込めないという依存関係の問題です。依存関係ファイル (DLL ファイル) をアプリケーション ディレクトリにコピーすることは一時的な方法です。これは、ターゲット マシンがそうでない場合、アプリケーションがターゲット マシンで問題に直面する可能性がある非常に危険な方法です。正しいバージョンの Microsoft ランタイム ライブラリがインストールされていると、アプリケーションを正しく実行できません。アプリケーションが必要とする依存関係 (DLL ファイル) をDependency Walkerで見つけることができます。

これを解決するには、次の 2 つの方法があります。

最初の 1 つは、インストール シールドでMicrosoft Visual C++ 2010 ランタイムコンポーネントを使用することです (または、別のバージョンは、それを使用してコンパイルしたランタイム ライブラリのバージョンによって異なります)。ユーザーはサイレント インストールするか、またはインストール シールドを使用せずに実行可能バイナリを使用してインストールできます。 DLL ファイルをアプリケーション ディレクトリにコピーして配布します。

2 つ目は、そのような問題を回避するために静的コンパイル方法を使用することですが、ターゲット マシンにアプリケーションを配布する場合、アプリケーションの静的コンパイルには商用ライセンスが必要です。

アプリケーションをターゲット マシンにデプロイする場合:

1) Microsoft Visual C++ 2010 ランタイムライブラリをアプリケーション フォルダーに配置し、ユーザーがマシンにインストールできるようにします。

2)アプリケーション フォルダー内のフォルダー (フォルダー パス: )DLL filesから、アプリケーションに必要な依存関係 ( ) をコピーします。Qt's binbinC:\Qt\Qt5.0.2\5.0.2\msvc2010\bin

imageformats3) アプリケーション フォルダ内のフォルダからフォルダをコピーQt's pluginsします (アプリケーションで画像リソース ファイルを使用する場合)。

4)アプリケーション フォルダー内のplatformsフォルダーからフォルダーをコピーします。Qt's plugins

Qt のプラグイン フォルダー パス:C:\Qt\Qt5.0.2\5.0.2\msvc2010\plugins\

于 2013-03-22T11:21:10.320 に答える
3

Qtプロジェクトサイトはそのようなトピックでいっぱいです。依存関係の追跡は、コンパイル時の依存関係のみを通知します。動的にロードされるDLLもあり、エラーや警告などは発生しません。ストックビルドを使用する場合、必要なDLL(Qt5 * .dllを除く)は次のとおりです。

  • D3DCompiler_46.dll(場合によってはD3DCompiler_43.dll)
  • libEGL.dll
  • libGLESv2.dll
  • icudt49.dll
  • icuin49.dll
  • icuuc49.dll
  • platform \ qwindows.dll(またはOSが何であれ)

さらに、使用しているビルドに応じて、コンパイラのランタイムdllが追加されます。

ANGLEの代わりにデスクトップOpenGLサポートを使用し、Webkitを使用せずにビルドすると、依存関係を大幅に削減できます。次に、使用しているプラ​​ットフォームプラグインとQtモジュールのみが必要です。

于 2013-03-22T09:45:03.513 に答える