2010-12-28 35 views
3

postgresqlとQt SQLモジュールを接続しようとしています。私は正常にpsqlドライバ(src \ plugins \ sqldrivers \ psql)をコンパイルします。しかし、私がpostgresqlに接続しようとすると、私はこのメッセージを受け取ります。Qt QPSQLドライバの問題

QSqlDatabase: QPSQL driver not loaded 
QSqlDatabase: available drivers: QSQLITE QMYSQL3 QMYSQL QODBC3 QODBC QPSQL7 QPSQL 

私は、Windows XP SP3にはPostgreSQL 8.3、Qtの4.7.1およびVisual Studio 2008を使用しています。(私もthisを試みるが、助けにはならなかった)

+1

他のDLL(postgresから)が見つからないため、プラグインをロードできないことがあります。 Dependency Walkerを使ってプラグインDLLを見てください。また、psqlのビルドが残りのQtビルド(リリースとデバッグなど)と一致することを確認してください。また、QPluginLoaderを使ってプラグインを手動でロードし、errorString()が役に立つかどうかを調べることもできます。 –

+0

フランクOsterfeld:私は前に依存性ウォーカーとdllプラグインを見た。 ieshims.dll、wer.dll、およびMSVCR90D.DLLが存在しないと報告されています。私はインターネットからdllをダウンロードし、プラグインディレクトリにコピーし、dwで開きます(警告:wer.dllとieshims.dllのために、少なくとも1つのモジュールに遅延ロード依存モジュールのエクスポート機能がないため、未解決のインポートがあります)しかしそれはうまくいかなかった。 – bmeric

答えて

2

を使用すると、リリースとデバッグをコンパイルしましたプラグインのバージョン?依存性ウォーカーの出力は、デバッグバージョンで作業しているように見えます。 %QTDIR%\ plugins \ sqldriversディレクトリーにqsqlpsql4.dllとqsqlpsqld4.dllが必要です。あなたのプログラムで使用されているプラ​​グインのパスを確認することができます:QString QLibraryInfo :: location(QLibraryInfo :: PluginsPath);

+0

qsqlpsql4.dll/qsqlpsqld4.dllとプラグインの両方のパスが正しくコンパイルされています(%QTDIR%\ plugins)。答えをありがとう。 – bmeric

+1

上記のリンクは、あなたのパスに(%pgsql)\ bin \を持つ必要性についても話しています。 – hmuelner

+0

私はリリース版とデバッグ版の両方をコンパイルしましたが、使用されているプラ​​グインのパスは正しいですが、私はまだ同じ問題を抱えています。他のアイデア? – Jordan