0

Qtの2つの異なるバージョンがインストールされている状況で実行しています。1つはmingwでコンパイルされ、もう1つはVisualStudioでコンパイルされています。さて、Qt MinGWバージョンでプログラムをコンパイルして実行すると、重要なQtモジュールの1つがロードされていないというメッセージがスクランブルされたテキストを受け取りました。私の質問は、C++を使用するアプリケーションのQtエッセンシャルモジュールへのパスをどのように設定できるかということです。ドキュメントを調べて、addLibraryPathメソッドを見つけましたが、Qtプラグインの場合のみのようです。

4

2 に答える 2

0

編集

プラグインではなくQtモジュール(QtGui4.dllなど)をロードする必要があるとSIFEがコメントしているため、この質問を誤解したようです。プラグインの答えは、誰かを助けるかもしれない場合に備えて、ここに残されています。

プラグイン

QtはSDK/plugins、デフォルトで含まれているプラ​​グインをロードします。問題は、最初に間違ったSDKを見つけることです...

私の記憶が正しければ、Qtは最初にディレクトリを検索し.ます。したがって、*。exeの近くにある'plugins'ディレクトリをコピーできます。msvcでコンパイルされたexeの近くにコピーされたmsvcのプラグインと、gccでコンパイルされたexeの近くにあるgccのプラグインです。

pluginsディレクトリをコピーしたくない場合は、 setLibraryPathsを使用できます(テストされていませんが、機能する可能性があります)

最後になりましたが、qt.confアプローチを使用することもできます。

モジュール

モジュールは、アプリケーションの依存関係の一部であるという意味で動的にロードされないため、LoadLibrary経由ではなく、exeの起動時にロードされます。したがって、解決策は簡単です。*。exeを含むフォルダーと同じフォルダーにdllをコピーするだけです。

于 2012-09-11T08:06:17.637 に答える
0

コンパイラに関しては、QMakeが適切なライブラリ/インクルード設定を行う必要があります。QMakeは、Qmakeが属する同じバージョンにあるライブラリを使用してmakefile/VS-Projectを作成します。

Qtバージョンごとに明示的に完全なパスを使用してQMakeを呼び出してみてください。

c:/myQtMinGwProject>c:/Qt4_mingw/bin/qmake 
c:/myQtVSProject>c:/Qt4_VS2008/bin/qmake -t vcapp

ランタイムに関しては、対応するバージョンのdllがPATHにあることを確認してください

お役に立てば幸いです

于 2012-09-14T22:41:16.790 に答える