QtRuby と PostgreSQL を使用してアプリケーションを開発しています。Linuxでの開発と実行に成功しました。今、同じアプリケーションを Windows で実行したいと考えています。しかし、データベース(postgresql)に接続できません。次のエラーが表示されます。
QSqlDatabase: QPSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QODBC3 QODBC
QtRuby と PostgreSQL を使用してアプリケーションを開発しています。Linuxでの開発と実行に成功しました。今、同じアプリケーションを Windows で実行したいと考えています。しかし、データベース(postgresql)に接続できません。次のエラーが表示されます。
QSqlDatabase: QPSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QODBC3 QODBC
エラー メッセージにあるように、Qt が Postgres と対話するために QPSQL ドライバーを使用できません。おそらくプラグインはまだコンパイルされていません。
このハウツーが示すように、PostgreSQL 開発者ライブラリをインストールしてから、Qt ドライバー プラグインを手動でビルドする必要があります。正確なコマンドについては、ハウツーを参照してください。
すごい!終わった!ただし、注意すべきヒントがいくつかあります。 1. Mingw-utils、0.4-1 は Windows 7 では機能しません。2. PSQL ドライバーのディレクトリに psql.json ファイルがあります。削除しないでください。
Windows で QT を使用する Postgresql:ドライバー QPSQL をコンパイルする方法 - MinGw - Win7
1)私のPCでインストールディレクトリを確認します:
PostgreSQL (32 bit) C:\PSQL32\bin
Qt (32 bit) C:\QT\4.8.0\bin
MingW32 C:\QT\qtcreator-2.4.0\mingw\bin
2) これら 3 つのディレクトリをシステム PATH に追加します。
3) 'mingw-utils' をダウンロードし、C:\Qt\4.8.0\bin にインストールします (ユーティリティ REIMP.exe が必要です)。
4) libpq.lib を mingw32 の便利な形式に変換します。
CD C:\PSQL32\lib
REIMP -d libpq.lib
libpq.def を開き、定義の先頭にあるすべての「_」を削除します
dlltool --input-def libpq.def --output-lib libpq.a --dllname libpq.dll
5) コンパイル:
CD C:\Qt\4.8.0\src\plugins\sqldrivers\psql
qmake -o Makefile "INCLUDEPATH+=C:\PSQL32\include" "LIBS+=C:\PSQL32\lib\libpq.a" psql.pro
mingw32-make デバッグ
mingw32-make リリース
10) dll をコピーします。
libqsqlpsqld4.a qsqlpsqld4.dll (debug)
libqsqlpsql4.a qsqlpsql4.dll (release)
ディレクトリ内:
C:\Qt\4.8.0\plugins\sqldrivers
QT バージョン 5.01 の新しい問題
struct timespec の複数の定義があります
PostgreSQL のpthread.hファイル(C:\PSQL32\include\pthread.h) 内
交換:
#ifndef HAVE_STRUCT_TIMESPEC
と:
#if ((!defined(_TIMESPEC_DEFINED)) && (!defined(HAVE_STRUCT_TIMESPEC)))
終わり :-)
ファウスト