Qtの2つの異なるバージョンがインストールされている状況で実行しています。1つはmingwでコンパイルされ、もう1つはVisualStudioでコンパイルされています。さて、Qt MinGWバージョンでプログラムをコンパイルして実行すると、重要なQtモジュールの1つがロードされていないというメッセージがスクランブルされたテキストを受け取りました。私の質問は、C++を使用するアプリケーションのQtエッセンシャルモジュールへのパスをどのように設定できるかということです。ドキュメントを調べて、addLibraryPathメソッドを見つけましたが、Qtプラグインの場合のみのようです。
2 に答える
編集
プラグインではなく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をコピーするだけです。
コンパイラに関しては、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にあることを確認してください
お役に立てば幸いです