-1

新しいプロジェクトで Qt を使用したいと考えています。ターゲット コンパイラ (VS2010 64 ビット) のインストーラが存在しません。

Qt 5.1.1 で Windows 7 64 ビットを使用しています。

私の同僚も Qt の使用を計画しており、私のターゲット コンパイラ用にコンパイルすることができました (彼も Qt を使用しています)。彼はそれをいくつかのディレクトリ、たとえば DirA に構築しました。彼は親切にも彼の Qt SDK ビルド全体 (バイナリ、サンプル、ヘッダーなど) のコピーを私にくれたので、私はそれを自分のマシンの DirB にコピーしました。

DirB に必要です。これは、すべてのサードパーティ ライブラリがインストールされている場所であり、CMake スクリプトがそれらを見つける方法を知っているためです。Qt bin フォルダーもパスに追加しました。

問題が発生します。Qt バイナリには、何らかの理由でインストール パス (この場合はビルド パス) がハード コードされています。そのため、Qt bin フォルダーがパスにある (DLL が見つかった) 場合でも、Qt の DLL は Windows の「プラグイン」の間違った場所を探しています。彼らは、私のマシンには存在しない DirA を探しています。

したがって、私が調査したところ、インストール パスのルートを指定する qt.conf ファイルを使用する方法が適していると考えられます。Qt bin ディレクトリに 1 つ追加すると、Qt バイナリ (assistant、qmake など) を実行できるようになりました。

しかし今、私は例の1つを構築しています。うまくビルドします。exe を実行すると、Qt DLL が読み込まれ、プラグイン ディレクトリが見つからないためにクラッシュします。

私の同僚と私が見つけた回避策は、私のqt.confファイルを私のexeが存在するディレクトリにコピーすることです。その後、exeが実行されます。

しかし、これは正しくないようです。私のexeはQt DLLを見つけることができますが、それがロードするQt DLLはqt.confを見つけることができません。彼らは、自分の格納フォルダーを調べることを知りません。qt.conf を見つけて使用するには、作業ディレクトリ (exe ディレクトリ) に qt.conf が必要です。

なぜこれが起こっているのか知っている人はいますか? また、exe のディレクトリに qt.conf ファイルを強制されないようにする方法を知っていますか? これには Qt の再構築が必要です。何か他の方法があるはずです。

4

1 に答える 1

1

qt.confバイナリに入れることができます。リソースシステムの使用。

Qt ドキュメントから:

qt.conf がないと、Qt ライブラリはハードコードされたパスを使用してプラグインや翻訳などを探します。これらのパスは、ターゲット システムに存在しないか、アクセスできない可能性があります。このため、Qt ライブラリが別の場所に見えるようにするには、qt.conf が必要です。

QLibraryInfo は、次のいずれかの場所から qt.conf をロードします。

:/qt/etc/qt.conf using the resource system

または:

QApplication::addLibraryPath()または を使用しQApplication::setLibraryPaths()ます。このアプローチは、プラグインを使用する実行可能ファイルが 1 つしかない場合に推奨されます。

QApplication::addLibraryPath を使用してカスタム パスを追加すると、次のようになります。

qApp->addLibraryPath("C:/customPath/plugins");

于 2013-09-03T22:26:21.077 に答える